ServiceNow-MCP
Summary: An MCP server that connects AI clients (Claude, Cursor, VS Code, etc.) to ServiceNow, exposing ~503 tools for reading and — when explicitly enabled — writing ITSM, CMDB, catalog, and platform data.
Read/query any ServiceNow table with filtering, field selection, sorting, pagination, plus schema inspection and single-record lookup.
Manage ITSM records end to end: incidents, problems, changes, tasks — create, update, add work notes or customer comments, resolve, close, and route for approval.
Work with the CMDB and ITOM: search CIs, inspect relationships, run impact analysis, view CMDB health, discovery schedules, MID servers, and infrastructure events.
Handle knowledge and service catalog: search/list KB articles and bases, create/update/publish/retire articles, browse and order catalog items, manage variables and UI policies.
Track requests and approvals: list sc_request / sc_req_item records, update or cancel them, view pending approvals, approve or reject.
Administer users and groups: list, create, update accounts and assignment groups, add or remove group members.
Report and analyze: saved reports, aggregate (COUNT/SUM/AVG) and time-bucketed trend queries, Performance Analytics widgets, KPIs, scheduled report delivery, and raw JSON exports.
Operate the platform: view system logs, list/inspect/create/update/trigger scheduled jobs, review job run history, and run ATF test suites.
Support multi-instance setups: list configured instances, switch the active instance, and check which one is current.
Offer experimental natural-language search and natural-language record updates.
Enforce tiered permissions: read-only by default, with writes gated behind env flags (WRITE_ENABLED, CMDB_WRITE_ENABLED, SCRIPTING_ENABLED, ATF_ENABLED) and OAuth 2.0 (client credentials or password grant) for authentication.
Run locally over stdio or Streamable HTTP with bearer-token auth, so no port or network setup is needed for standard use.
Integrates with GitHub Copilot to provide ServiceNow operations via natural language, enabling AI-assisted management of ITSM records, catalog items, and platform configuration.
Allows Google Gemini to communicate with ServiceNow through the MCP server, enabling natural language operations on incidents, changes, CMDB, and other ServiceNow data.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ServiceNow-MCPShow me the latest 5 P1 incidents"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
/>_________________________________
[########[]_________________________________>
\>⛩️ servicenow-mcp ⛩️
⚔️ 武士道 (BUSHIDO) エディション ⚔️
AI から ServiceNow を自然言語で操作する MCP サーバー
ローカル PC で動作 · 503 ツール · 5 分セットアップ · MIT ライセンス
Claude・Cursor・VS Code などの AI ツールから、ServiceNow のインシデント・変更・CMDB・スクリプトなどをすべて自然言語で操作できます。
開発版(未リリース)
明示指定のAU-CL-006を追加。Client Scriptのg_formによる必須・表示・読取専用制御をUI Policy検討の候補にします。複雑な処理やUI制約を一律違反とせず、適合性を確認項目として返します。既定3規則・上限は維持、合成検証のみです。
明示指定のAU-BR-007を追加。保存値before_displayのBRでcurrentへの直接書込み・限定setterを確認候補にします。表示目的の変更を違反と断定せず、永続化要件を確認項目として返します。既定3規則・上限は維持、合成検証のみです。
明示指定のAU-BR-005を追加。before BRの中止後の呼出し・プロパティ書込みを、受信側・順序・早期return・if分岐を区別して候補化します。必要な後処理を違反と断定せず、未対応経路は未解決。既定3規則・上限は維持し、合成検証のみです。
明示指定のAU-BR-004を追加。BRのトップレベル変数候補を関数/ブロックlocalと区別し、共有の意図は確認項目として返します。Global-tableとglobal scopeを混同せず、自動除外や承認はしません。既定3規則は維持、今回の追加分は合成検証のみです。
AU-QRY-001を明示指定するBR限定のaddQueryレビューを追加。ローカルGlideRecord系の3引数・リテラルLIKEを候補化し、encoded queryのLIKEは対象外。未解決は制限として返します。既定3規則は維持し、今回の追加分は合成検証のみ・PDI未検証です。読み取り専用PoC
review_update_set_best_practicesを登録。AustraliaのUpdate Set payloadを対象に、3規則の候補と公式根拠を本文なしのJSONで返します。BR/Client Scriptの規則を評価するときはselection_mode=review_targetsを明示し、0.3 JSONの制限・取得範囲を確認してください。PDI対象選択E2Eは5成功・0スキップ:既存BR10件への解析到達と省略時の0.2互換性を確認しました。非アクティブ合成Client ScriptのE2EでもAU-CL-004の候補1件を確認しました。件数・受信量・全体60秒の上限は不変です。UI実行、人による規則承認・独立品質評価は未確認で、「安全」「違反確定」を意味しません。詳細は利用例・制限。
v1.13 ハイライト
Node.js 22.12 以上が必要です(v1.12.0〜)。Node 20 は 2026 年 4 月に EOL を迎えました。MCP クライアント設定の
commandが Node 22.12 以上を起動することを確認してくださいExcel 取り込み(
import_excel_to_import_set)を、外部ライブラリを使わない読み取り専用パーサに置き換え。インストール時の依存が 231 → 137 パッケージ・65 MB → 31 MB になり、npm auditは 0 件Excel 取り込みの改善: 空行より後の行も取り込む(従来は欠落)、ヘッダー行の数式は拒否、和暦など日本語の組み込み日付書式を日付として取り込む
stdio で起動したとき、
.envの読み込みメッセージが stdout に混ざってプロトコルを壊す問題を修正(v1.11.8)
v1.11.7 ハイライト
list_active_eventsは未処理イベント(Ready/Error)を新しい順に取得するよう改善。処理済みを含む全状態を検索する場合はstate: "all"を指定Smart Query・USEM・Now Assist メタデータ・ServiceNow Store の読み取り専用 E2E を追加。2026-09-26 の追加分は 21 件成功・4 件スキップ(対象データ不足)。AI 起動やレコード更新は実施していません
v1.11.6 までの主な変更
Update Set 内のスクリプト系 Customer Update から、固定バージョンの npm コンポーネントを検出し、OSV の advisory と照合する読み取り専用 SCA ツール
scan_update_set_scaを追加SCA は本文・payload・一致箇所を返さず、メタデータ・ハッシュ・PURL・証跡のみを返却。未解決参照や照会失敗を「脆弱性なし」と誤認しない JSON 契約を提供
Event Management のアラート一覧・詳細・集計・確認・クローズ・更新の 6 ツールを追加(
itom_engineerパッケージ)SOAP、Security Incident Response、脆弱性スキャン、バックグラウンドスクリプト実行、Agile Epic の実機で判明した不整合を修正
v1.11.6 で ExcelJS 配下の
uuidを固定しましたが、npm のoverridesはインストール先には適用されないため、利用者環境のnpm audit警告は v1.13.0 で ExcelJS を依存から外すまで残っていました
Related MCP server: snow-mcp
このツールが何をするか(初心者向け)
flowchart TD
subgraph PC["💻 あなたの PC"]
direction TB
AI["🤖 AI クライアント<br/>(Claude Desktop / Cursor / VS Code)"]
MCP["⚙️ servicenow-mcp サーバー<br/>(ここがこのツール)"]
AI <-->|"MCP プロトコル (stdio)"| MCP
end
SN["☁️ ServiceNow インスタンス<br/>(開発 PDI または 社内環境)"]
MCP <-->|"HTTPS / REST API<br/>(インターネット経由)"| SN
style PC fill:#f0f7ff,stroke:#00509E,stroke-width:2px,color:#333,stroke-dasharray: 5 5
style AI fill:#ffffff,stroke:#333,stroke-width:2px,color:#000
style MCP fill:#e6ffe6,stroke:#008000,stroke-width:2px,color:#000
style SN fill:#fff0f0,stroke:#cc0000,stroke-width:2px,color:#000ポイント:
サーバーは あなたの PC 上で動く Node.js プロセスです。通常のツールは ServiceNow とだけ通信します。SCA の OSV 脆弱性照会など、外部連携を行うツールは個別に明示します
AI クライアントと stdio(標準入出力)で通信するため、ポート開放やネットワーク設定は不要
ServiceNow へは HTTPS で接続します。既存のブラウザアクセスと同じ経路です
推奨環境
まずは開発インスタンス (PDI) でお試しください。
本番環境への接続は技術的には可能ですが、AI の誤操作・意図しないレコード更新を防ぐため、
はじめは読み取り専用モード (WRITE_ENABLED=false) で動作を確認してから本番適用してください。
環境 | 推奨度 | 注意 |
PDI (無料開発インスタンス) | ★★★ 推奨 | 無料。操作の影響なし。初めて使う方はここから |
社内開発・検証インスタンス | ★★☆ 可 | チームと共有している場合は読み取り専用で開始 |
本番インスタンス | ★☆☆ 要注意 |
|
無料 PDI → developer.servicenow.com
動作の仕組み
sequenceDiagram
participant U as あなた
participant AI as AI クライアント<br/>(Claude / Cursor)
participant MCP as servicenow-mcp<br/>(ローカル PC)
participant SN as ServiceNow<br/>(クラウド)
U->>AI: 「P1 インシデントを一覧表示して」
AI->>MCP: list_incidents(priority=1) を呼び出す
MCP->>MCP: 権限チェック (読み取りは常に許可)
MCP->>SN: GET /api/now/table/incident?sysparm_query=priority=1
SN-->>MCP: JSON でインシデント一覧を返す
MCP-->>AI: ツール結果を返す
AI-->>U: 「現在 3 件の P1 インシデントがあります...」はじめての方向け — 5 分セットアップ
flowchart TD
A([はじめる]) --> B{ServiceNow\nインスタンスはある?}
B -->|ない| C[developer.servicenow.com\nで無料 PDI を取得\n約 10 分]
B -->|ある| D
C --> D{Node.js 22.12+\nインストール済み?}
D -->|ない| E[nodejs.org から\nLTS 版をインストール]
E --> F
D -->|あり| F[ターミナルでコマンド実行]
F --> G["npm install -g @tedorigawa001/servicenow-mcp"]
G --> H["servicenow-mcp setup"]
H --> I{セットアップ\nウィザード}
I --> J[インスタンス URL を入力\n例: https://dev12345.service-now.com]
J --> K[OAuth グラントタイプを選択\nclient_credentials または password]
K --> L[OAuth 認証情報を入力]
L --> M[接続テスト]
M -->|失敗| N[URL・認証情報を確認]
N --> L
M -->|成功| O[AI クライアントを自動検出]
O --> P[設定ファイルを自動書き込み]
P --> Q([完了!\nAI から ServiceNow に繋がります])ステップ 1 — インストール
方法 A: npm からインストール(推奨・最速)
# Node.js のバージョン確認 (22.12 以上が必要)
node --version
# グローバルインストール
npm install -g @tedorigawa001/servicenow-mcp
# セットアップウィザードを起動
servicenow-mcp setup方法 B: ソースからビルド(開発・カスタマイズしたい方向け)
# リポジトリをクローン
git clone https://github.com/tedorigawa001/ServiceNow-MCP.git
cd ServiceNow-MCP
# 依存パッケージのインストール & コンパイル
npm install
npm run build
# セットアップウィザードを起動
npm run setupどちらの方法でも、ウィザードが Claude Desktop・Cursor・VS Code などを自動検出し、設定ファイルを自動で書き込みます(VS Code は npx ... server 起動 + シークレットは inputs 化、それ以外は dist/server.js の絶対パス)。
ステップ 2 — AI クライアントを再起動
設定ファイルを書き込んだあと、Claude Desktop や Cursor を 一度完全に終了して再起動 してください。
ステップ 3 — 動作確認
AI に話しかけてみましょう:
「ServiceNow に接続して、直近のインシデントを 5 件表示してください」Docker での起動
ソースビルド vs Docker — どちらを選ぶか
比較項目 | ソースビルド( | Docker( |
起動速度 | ✅ 即時 | ⚠️ コンテナ起動分のオーバーヘッドあり |
設定のシンプルさ | ⚠️ 絶対パスが必要 | ✅ |
環境依存 | Node.js 22.12+ が必要 | Docker が必要 |
環境の統一 | ⚠️ ホスト環境に依存 | ✅ どの PC でも同一環境 |
チーム配布・CI/CD | ⚠️ 各自でビルドが必要 | ✅ イメージを共有するだけ |
推奨シーン | 個人利用・開発 | チーム配布・本番運用 |
イメージのビルドと起動
# イメージをビルド
docker build -t servicenow-mcp .
# 起動
docker run --rm -i \
-e SERVICENOW_INSTANCE_URL=https://yourinstance.service-now.com \
-e SERVICENOW_OAUTH_CLIENT_ID=your_client_id \
-e SERVICENOW_OAUTH_CLIENT_SECRET=your_client_secret \
servicenow-mcpPassword Grant を使う場合は、さらに以下を追加します:
-e SERVICENOW_OAUTH_USERNAME=service_account_user \
-e SERVICENOW_OAUTH_PASSWORD=service_account_password \AI クライアントから接続する(Claude Desktop)
claude_desktop_config.json の command / args を以下のように変更します。
Client Credentials を使う場合は SERVICENOW_OAUTH_USERNAME と SERVICENOW_OAUTH_PASSWORD の 2 行を省略してください。
{
"mcpServers": {
"servicenow": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "SERVICENOW_INSTANCE_URL=https://yourinstance.service-now.com",
"-e", "SERVICENOW_OAUTH_CLIENT_ID=your_client_id",
"-e", "SERVICENOW_OAUTH_CLIENT_SECRET=your_client_secret",
"-e", "SERVICENOW_OAUTH_USERNAME=service_account_user",
"-e", "SERVICENOW_OAUTH_PASSWORD=service_account_password",
"servicenow-mcp"
]
}
}
}注意:
-iフラグは必須です。MCP は stdio(標準入出力)で通信するため、インタラクティブモードが必要です。
HTTP モードで起動する場合: コンテナ内の既定バインドは
127.0.0.1のため公開ポートからは到達できません。-e MCP_TRANSPORT=http -e MCP_HTTP_HOST=0.0.0.0 -p 3000:3000を付与してください。 イメージは非 root(nodeユーザー)で動作し、EXPOSE 3000済みです。
認証方式(OAuth 2.0 のみ)
このサーバーは OAuth 2.0 のみ をサポートします。Basic Auth はセキュリティリスク(資格情報が平文で設定ファイルに残る)があるため廃止しました。
OAuth 2.0 には 2 種類のグラントタイプがあり、用途に応じて自動選択されます。
flowchart TD
START([OAuth 設定]) --> Q1{ユーザー名/パスワードを\n設定する?}
Q1 -->|しない| CC["Client Credentials Grant\ngrant_type=client_credentials\n\nclient_id + client_secret のみ\n推奨: サービス間連携・自動化"]
Q1 -->|する| PW["Password Grant\ngrant_type=password\n\nclient_id + client_secret\n+ username + password\n既存ユーザー権限を引き継ぎたい場合"]
CC --> CC_NOTE["ServiceNow が Application Registry 上の\nスコープで API を実行する"]
PW --> PW_NOTE["指定ユーザーの権限でAPIを実行する\n(ACL・ロールがそのまま適用)"]Client Credentials(推奨)
client_id と client_secret だけで動作します。ユーザー資格情報が不要なため、サービス間連携に最適です。
SERVICENOW_INSTANCE_URL=https://dev12345.service-now.com
SERVICENOW_OAUTH_CLIENT_ID=your_client_id
SERVICENOW_OAUTH_CLIENT_SECRET=your_client_secretPassword Grant(ユーザー権限を引き継ぐ場合)
特定ユーザーの ACL・ロールで API を実行したい場合に使います。
SERVICENOW_INSTANCE_URL=https://dev12345.service-now.com
SERVICENOW_OAUTH_CLIENT_ID=your_client_id
SERVICENOW_OAUTH_CLIENT_SECRET=your_client_secret
SERVICENOW_OAUTH_USERNAME=svc_mcp
SERVICENOW_OAUTH_PASSWORD=your_passwordOAuth セットアップ手順
OAuth は ServiceNow の管理者権限が必要です。PDI では自分で設定できます。
ServiceNow 側の設定
Step 1 — OAuth アプリケーションレジストリを作成
ServiceNow にログイン
左メニューで「Application Registry」を検索
「New」→ 「New Inbound Integration Experience」 を選択
⚠️ 「[Deprecated UI] Create an OAuth API endpoint for external clients」は旧 UI です。
現行バージョンでは New Inbound Integration Experience を使用してください。
グラントタイプによって設定が異なります。
Client Credentials Grant(推奨)
重要: Client Credentials Grant では ServiceNow 側でユーザーを指定する必要があります。
これは標準 OAuth の仕様とは異なる ServiceNow 固有の要件です。
アクセストークンは「どのユーザーとして API を実行するか」を ServiceNow が決定するために使用します。
Name: servicenow-mcp
Token Format: JWT ← 必須
Client ID: (自動生成)
Client Secret: (自動生成 → コピーして保存)
Redirect URL: http://localhost
Access Token Lifespan: 1800 (秒)
Default Grant user: svc_mcp ← 必須: API を実行するサービスアカウントを指定Default Grant user に指定したユーザーの ロール・ACL が API 実行時に適用されます。
このユーザーには必要最小限の ServiceNow ロール(例: itil, admin 等)を付与してください。
Password Grant
Name: servicenow-mcp
Token Format: JWT ← 必須
Client ID: (自動生成)
Client Secret: (自動生成 → コピーして保存)
Redirect URL: http://localhost
Access Token Lifespan: 1800 (秒)
Default Grant user: (不要 — username/password で指定したユーザーが使われます)「Submit」で保存。
Step 2 — 生成された Client ID / Secret を確認
作成したレジストリを開き、Client ID と Client Secret をメモします。
flowchart LR
A[Application Registry を開く] --> B[Client ID をコピー]
A --> C[Client Secret をコピー\nShow をクリック]
B & C --> D[環境変数に設定]MCP サーバー側の設定
Client Credentials Grant
SERVICENOW_INSTANCE_URL=https://dev12345.service-now.com
SERVICENOW_OAUTH_CLIENT_ID=your_client_id
SERVICENOW_OAUTH_CLIENT_SECRET=your_client_secret
# SERVICENOW_OAUTH_USERNAME / PASSWORD は不要Password Grant
SERVICENOW_INSTANCE_URL=https://dev12345.service-now.com
SERVICENOW_OAUTH_CLIENT_ID=your_client_id
SERVICENOW_OAUTH_CLIENT_SECRET=your_client_secret
SERVICENOW_OAUTH_USERNAME=svc_mcp
SERVICENOW_OAUTH_PASSWORD=your_password接続確認:
node dist/cli/index.js auth testAI クライアント別セットアップ
Claude Desktop
設定ファイル: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"servicenow": {
"command": "node",
"args": ["/path/to/servicenow-mcp/dist/server.js"],
"env": {
"SERVICENOW_INSTANCE_URL": "https://dev12345.service-now.com",
"SERVICENOW_OAUTH_CLIENT_ID": "your_client_id",
"SERVICENOW_OAUTH_CLIENT_SECRET": "your_client_secret",
"WRITE_ENABLED": "false"
}
}
}
}
WRITE_ENABLED: "false"にしておくと読み取り専用になります。動作確認が終わったら"true"に変更できます。
ユーザー権限を引き継ぐ場合はSERVICENOW_OAUTH_USERNAMEとSERVICENOW_OAUTH_PASSWORDも追加してください。
Claude Code CLI
claude mcp add servicenow node /path/to/servicenow-mcp/dist/server.js \
--env SERVICENOW_INSTANCE_URL=https://dev12345.service-now.com \
--env SERVICENOW_OAUTH_CLIENT_ID=your_client_id \
--env SERVICENOW_OAUTH_CLIENT_SECRET=your_client_secret \
--env WRITE_ENABLED=falseCursor
設定ファイル: .cursor/mcp.json
{
"mcpServers": {
"servicenow": {
"command": "node",
"args": ["/path/to/servicenow-mcp/dist/server.js"],
"env": {
"SERVICENOW_INSTANCE_URL": "https://dev12345.service-now.com",
"SERVICENOW_OAUTH_CLIENT_ID": "your_client_id",
"SERVICENOW_OAUTH_CLIENT_SECRET": "your_client_secret",
"WRITE_ENABLED": "true",
"SCRIPTING_ENABLED": "true"
}
}
}
}VS Code (1.99+)
設定ファイル: .vscode/mcp.json(ワークスペースルート)
.vscode/ はコミットされがちなので、シークレットは平文で書かず VS Code の inputs(初回起動時にプロンプト表示・暗号化保存)に逃がします。セットアップウィザードもこの形式で書き込みます。
{
"inputs": [
{
"type": "promptString",
"id": "servicenow-client-secret",
"description": "ServiceNow OAuth client secret",
"password": true
}
],
"servers": {
"servicenow-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@tedorigawa001/servicenow-mcp", "server"],
"env": {
"SERVICENOW_INSTANCE_URL": "https://dev12345.service-now.com",
"SERVICENOW_OAUTH_CLIENT_ID": "your_client_id",
"SERVICENOW_OAUTH_CLIENT_SECRET": "${input:servicenow-client-secret}"
}
}
}
}対応クライアント一覧
クライアント | 種別 | ガイド |
Claude Desktop | デスクトップ | |
Claude Code CLI | ターミナル | |
Cursor | AI エディタ | |
Windsurf | AI エディタ | |
VS Code (Native MCP 1.99+) | IDE | |
VS Code + GitHub Copilot | IDE | |
VS Code + Continue.dev | IDE | |
VS Code + Cline | IDE | |
JetBrains AI | IDE | |
Amazon Q Developer | IDE / CLI | |
ChatGPT / OpenAI API | API | |
Google Gemini API | API | |
Ollama (ローカル LLM) | ローカル |
全クライアントのセットアップ詳細 → docs/CLIENT_SETUP.md
トランスポート(stdio / HTTP)
デフォルトは stdio(標準入出力)で、ポート開放やネットワーク設定は不要です。 ブラウザ経由の接続(Claude.ai Web UI)、Docker コンテナ公開、複数クライアントでのサーバー共有、 CI/CD からの呼び出しが必要な場合は Streamable HTTP トランスポートに切り替えられます。
# HTTP トランスポートで起動(トークンはランダムな十分長い値を使用)
MCP_TRANSPORT=http MCP_HTTP_AUTH_TOKEN=replace-with-a-random-secret node dist/server.js
# → http://127.0.0.1:3000/mcp で待ち受け、GET /health でヘルスチェック環境変数 | デフォルト | 説明 |
|
|
|
|
| 待ち受けポート |
|
| バインドアドレス(外部公開時は |
|
| MCP エンドポイントのパス |
| (必須) | MCP エンドポイント用 Bearer トークン。未設定時は |
|
| CORS 許可オリジン |
| (なし) | カンマ区切り。指定すると DNS リバインディング保護を有効化 |
| (なし) | カンマ区切り。Origin ヘッダの許可リスト |
|
| JSON-RPC 要求本文の最大バイト数 |
|
| 同時 HTTP MCP セッションの上限 |
|
| 未使用セッションを閉じるまでのミリ秒 |
セッションは MCP 仕様に従い、initialize 応答の Mcp-Session-Id ヘッダで払い出され、
以降のリクエストで再利用します(DELETE /mcp でセッション終了)。HTTP 接続するクライアント設定例:
{
"mcpServers": {
"servicenow": {
"url": "http://localhost:3000/mcp",
"headers": { "Authorization": "Bearer replace-with-a-random-secret" }
}
}
}セキュリティ注意: HTTP MCP は
MCP_HTTP_AUTH_TOKENを必須とします。デフォルトは loopback(127.0.0.1)バインドです。MCP_HTTP_HOST=0.0.0.0で外部公開する場合は、リバースプロキシでの TLS 終端・認証、およびMCP_HTTP_ALLOWED_HOSTS/MCP_HTTP_ALLOWED_ORIGINSによる保護を推奨します。
権限設定(何ができるかを制御する)
デフォルトは読み取り専用です。操作範囲を広げたい場合は環境変数で段階的に有効化します。
graph TD
T0["🛡️ Tier 0: 常時有効 (デフォルト)<br/>インシデント表示 / KB 検索 / レコード参照..."]
T1["✏️ Tier 1: WRITE_ENABLED=true<br/>インシデント作成・更新 / 変更リクエスト管理..."]
T2["🧩 Tier 2: CMDB_WRITE_ENABLED=true (Tier 1も必要)<br/>CI の作成・更新 / 関連付け管理..."]
T3["⚙️ Tier 3: SCRIPTING_ENABLED=true (Tier 1も必要)<br/>ビジネスルール / スクリプト / Update Set..."]
TAI["🤖 Tier AI: NOW_ASSIST_ENABLED=true<br/>NLQ / AI サマリー / Agentic Playbook..."]
T0 --> T1
T1 --> T2
T1 --> T3
T0 -.->|"独立オプション"| TAI
style T0 fill:#f5f5f5,stroke:#999,stroke-width:2px,color:#333
style T1 fill:#e3f2fd,stroke:#2196f3,stroke-width:2px,color:#000
style T2 fill:#fff3e0,stroke:#ff9800,stroke-width:2px,color:#000
style T3 fill:#ffebee,stroke:#f44336,stroke-width:2px,color:#000
style TAI fill:#f3e5f5,stroke:#9c27b0,stroke-width:2px,color:#000本番環境で使う場合の推奨設定:
WRITE_ENABLED=false # まずは読み取りのみで確認
CMDB_WRITE_ENABLED=false
SCRIPTING_ENABLED=false # 本番では原則 false のままロールベース ツールパッケージ
MCP_TOOL_PACKAGE 環境変数でツールを絞り込めます。全部入りではなく、用途に応じたセットを使うと AI が迷わずに済みます。
mindmap
root((ツールパッケージ))
full
全503ツール
service_desk
インシデント管理
タスク/承認
KB検索
SLA確認
change_coordinator
変更管理
CABスケジュール
CMDB参照
platform_developer
スクリプト管理
ACL/UI Policy
ATFテスト
Update Set
system_administrator
ユーザー/グループ管理
レポート/ログ
PA ダッシュボード
itom_engineer
CMDB
Discovery
MIDサーバー
ai_developer
Now Assist
NLQ
Agentic Playbooks
secops_analyst
VI作成/RT横断検索
グルーピング診断
SLA/例外承認パッケージ名 | 対象ロール | 主なツール |
| 管理者 | 全ツール (503) |
| L1/L2 エージェント | インシデント・タスク・KB・SLA |
| 変更管理者 | 変更リクエスト・CAB・CMDB |
| KB 著者 | KB 作成・公開 |
| カタログ管理者 | カタログ・承認ルール |
| システム管理者 | ユーザー・グループ・レポート |
| 開発者 | スクリプト・ATF・Update Set |
| ポータル開発者 | ポータル・ウィジェット・UX |
| 統合エンジニア | REST・Transform・イベント |
| ITOM エンジニア | CMDB・Discovery(実行履歴/エラー調査)・MID ヘルス・ACC・Event Management アラート管理 |
| スクラムマスター | ストーリー・エピック |
| AI 開発者 | Now Assist・NLQ・Playbook |
| 資産管理者 | 資産・ライセンス・契約・SAM Pro(ソフトウェア資産管理) |
| SecOps アナリスト | 脆弱性(VI/RT)・RT横断検索・グルーピング診断・USEM・SLA・例外承認 |
| DevOps | パイプライン・デプロイ |
使用例
自然言語で操作する
「Network Operations グループの P1 インシデントをすべて表示して」
「INC0012345 に "調査中。30 分以内に更新します" とワークノートを追加して」
「SAP 本番システムの障害でインシデントを作成して。
優先度 Critical、Network Ops グループに割り当てて」
「先月の Priority 別インシデント件数をグラフ用データで出して」典型的なやりとりの流れ
sequenceDiagram
participant U as あなた
participant AI as AI アシスタント
participant MCP as servicenow-mcp
participant SN as ServiceNow
U->>AI: 「SAP の P1 インシデントを作って」
AI->>MCP: create_incident を呼び出す
MCP->>MCP: WRITE_ENABLED チェック ✅
MCP->>SN: POST /api/now/table/incident
SN-->>MCP: INC0099001 作成完了
MCP-->>AI: 作成結果を返す
AI-->>U: 「INC0099001 を作成しました」
U->>AI: 「SAP サーバーの CMDB 依存関係も確認して」
AI->>MCP: search_cmdb_ci + list_relationships
MCP->>SN: CMDB API を 2 回呼び出す
SN-->>MCP: 依存 CI 8 件
MCP-->>AI: 依存関係リスト
AI-->>U: 「SAP-PROD-DB01 は 8 つの CI に依存しています」Update Set の第三者コンポーネントを SCA する
scan_update_set_sca は 読み取り専用で Update Set 内のスクリプト系 Customer Update を収集し、固定バージョンが確認できる npm コンポーネントを検出します。既定では OSV に照会して advisory を JSON で返します。コード本文・payload・一致箇所の文字列は返しません。
「Release 1.12 Update Set を SCA スキャンして。検出したコンポーネント、
脆弱性、照会できなかった項目、次の対応を JSON の根拠だけで報告して」ローカル収集だけを先に確認したい場合は、AI に lookup_vulnerabilities: false を指定します。
{
"update_set": "46f0...",
"max_records": 50,
"lookup_vulnerabilities": false
}AI への報告依頼例:
scan_update_set_sca の JSON だけを根拠に報告してください。
critical / high を最優先にし、各 finding は component、installed_version、
advisory_id、fixed_versions、evidence の asset_type と asset_name を示してください。
summary.assessment、lookup.status、errors、unresolved_references、truncated を必ず確認し、
対象外・未照会・失敗を「脆弱性なし」と表現しないでください。
修正は自動実行せず、Update Set の変更案と確認手順を提案してください。制約:
findingsが空でも安全性は証明されません。バージョン範囲、latestのような CDN alias、バージョンなしのモジュール参照は CVE 照合できずunresolved_referencesとして返ります。CDN URL を検出しても、そのライブラリが実際にロード・実行されたことまでは示しません。また SCA は依存コンポーネントを対象にするものであり、ServiceNow のカスタムスクリプトに対する SAST、権限設計、クエリ安全性のレビューを代替しません。
スラッシュコマンド & @メンション
/morning-standup → P1/P2 オープンインシデント・当日変更・SLA 違反のサマリー
/my-tickets → 自分に割り当てられたオープンタスク一覧
/p1-alerts → アクティブな P1 インシデント一覧
@my-incidents → 自分のインシデントをコンテキストに追加
@ci:web-prod-01 → CMDB CI レコードをコンテキストに追加
@kb:VPN-setup → KB 記事をコンテキストに追加120+ の実例 → EXAMPLES.md
マルチインスタンス対応
graph LR
User["あなたの PC\n(AI + MCP サーバー)"] -->|dev| DEV[(開発 PDI\ndev12345.service-now.com)]
User -->|staging| STG[(検証\nstg.company.com)]
User -->|prod| PRD[(本番\nacme.service-now.com)]{
"default_instance": "dev",
"instances": {
"dev": {
"url": "https://dev12345.service-now.com",
"client_id": "dev-client-id",
"client_secret": "dev-client-secret"
},
"prod": {
"url": "https://acme.service-now.com",
"auth": "oauth",
"client_id": "xxx",
"client_secret": "yyy",
"username": "svc_account",
"password": "zzz"
}
}
}SN_INSTANCES_CONFIG=/path/to/instances.jsonモジュールカバレッジ
graph TB
subgraph ITSM["ITSM & サービス管理"]
I1[インシデント管理]
I2[問題管理]
I3[変更管理]
I4[タスク管理]
I5[ナレッジベース]
I6[サービスカタログ]
end
subgraph PLATFORM["プラットフォーム & 開発"]
P1[スクリプト/ビジネスルール]
P2[Flow Designer]
P3[Service Portal / UIB]
P4[ATF テスト]
P5[Update Set 管理]
P6[App Studio]
end
subgraph OPS["運用 & 分析"]
O1[CMDB / ITOM]
O2[Performance Analytics]
O3[レポート / 集計]
O4[通知 / 添付]
O5[システムプロパティ]
O6[DevOps パイプライン]
O7[インスタンス診断 / 性能履歴]
end
subgraph EXTENDED["拡張モジュール"]
E1[HRSD]
E2[CSM]
E3[SecOps / GRC]
E4[Agile / Scrum]
E5[IT 資産管理]
E6[Virtual Agent]
end
subgraph AI["AI & インテグレーション"]
A1[Now Assist / AI]
A2[Integration Hub]
A3[Machine Learning]
A4[モバイル]
A5[ワークスペース]
endプロジェクト構造
servicenow-mcp/
├── src/
│ ├── server.ts # MCP サーバーエントリーポイント
│ ├── servicenow/
│ │ ├── client.ts # REST API クライアント (OAuth)
│ │ ├── instances.ts # マルチインスタンスマネージャー
│ │ └── types.ts # TypeScript 型定義
│ ├── tools/ # 47 ドメインモジュール (503 ツール)
│ │ ├── index.ts # ツールルーター & パッケージ定義
│ │ ├── incident.ts
│ │ ├── change.ts
│ │ ├── knowledge.ts
│ │ └── ...
│ ├── prompts/ # スラッシュコマンド定義
│ ├── resources/ # @メンション定義
│ ├── cli/ # セットアップウィザード
│ └── utils/
│ ├── permissions.ts # 5 段階権限ゲート
│ └── errors.ts
├── tests/ # 通常テスト・実機 E2E (Vitest)
├── docs/ # ドキュメント
└── instances.example.json開発
npm install # 依存パッケージのインストール
npm run build # TypeScript → dist/ にコンパイル
npm test # 通常テストを実行(実機 E2E は別途 opt-in)
npm run dev # ウォッチモード
npm run type-check # 型チェックのみ
npm run lint # ESLint実機 E2E の検証範囲
追加の読み取り専用 E2E(2026-09-26)は、4 スイート・25 ケース中 21 件成功、4 件スキップです。 スキップは VI/RT/グループの対象レコード不足による詳細取得テストで、成功件数には含めていません。 Now Assist はメタデータ取得のみで、AI 推論・生成・プレイブック起動は未検証です。
MCP登録時点のE2Eコード静的集計記録は **241/503 ツール(約47.9%)**です(今回追加した試験を含む全体対象数の再集計ではありません)。
ベストプラクティスレビューは今回、実機の取得/集約2件成功・payload解析1件スキップで、詳細は検証記録を参照してください。
これはコード行・分岐のカバレッジや、全241ツールの実機成功率を示す数値ではありません。
テスト件数は変更されるため、通常テストの最新件数は npm test の実行結果を参照してください。
PDI と OAuth を設定したうえで、今回の読み取り専用スイートだけを実行する例:
RUN_E2E=true WRITE_ENABLED=false SCRIPTING_ENABLED=false \
npx vitest run -c vitest.e2e.config.ts \
tests/e2e/smart-query.e2e.test.ts \
tests/e2e/usem-read.e2e.test.ts \
tests/e2e/now-assist-read.e2e.test.ts \
tests/e2e/store-read.e2e.test.tsNow Assist メタデータのテストは NOW_ASSIST_ENABLED=true の場合のみ実行します。
不足するプラグイン・テストデータは理由付きでスキップし、API/ACL エラーは失敗として扱います。
詳細は E2E 検証記録 と CONTRIBUTING.md を参照してください。
よくある質問
ServiceNow の API 知識は必要ですか?
いいえ。「P1 インシデントを一覧表示して」のように日本語で話しかけるだけです。API 呼び出しはサーバーが自動で行います。
本番環境に接続しても大丈夫ですか?WRITE_ENABLED=false(デフォルト)で接続する分には読み取りのみで安全です。書き込みを有効にする前に、必ず開発環境で動作を確認してください。
無料で使えますか?
このサーバー自体は MIT ライセンスで無料です。ServiceNow の無料 PDI(Personal Developer Instance)も developer.servicenow.com で取得できます。AI クライアント側(Claude Pro 等)の料金は各サービスに従います。
MCP って何ですか?
Model Context Protocol の略で、AI クライアントが外部ツールを呼び出すための標準規格です。Claude・Cursor などが対応しています。このサーバーは MCP に準拠しているため、対応 AI から自動的に発見・使用されます。
複数インスタンスに接続できますか?
はい。instances.json で dev / staging / prod を定義しておき、「本番インスタンスに切り替えて」と指示するだけで切り替わります。
ドキュメント
ガイド | 内容 |
環境変数リファレンス | |
全 AI クライアントのセットアップ | |
ServiceNow OAuth アプリ作成手順(詳細版) | |
ロールベースパッケージの詳細 | |
全ツールのパラメータ・権限要件 | |
マルチインスタンス設定 | |
Now Assist / AI 統合 | |
ATF テストガイド | |
120+ 実用例 | |
セキュリティポリシー・脆弱性報告 | |
変更履歴 |
コントリビュート
CONTRIBUTING.md をお読みの上、Pull Request をお送りください。
バグ報告・機能要望 → Issue を開く
セキュリティ
脆弱性を発見した場合は 公開 Issue には投稿せず、SECURITY.md の責任ある開示プロセスに従ってください。
ライセンス
MIT — 個人・商用利用とも無料。
503 ツール · 47 モジュール · ローカル PC で動作 · 永久オープンソース
役に立ったら ⭐ スターをお願いします — 他の人が見つけやすくなります。
Available Tools
503 toolsacknowledge_alertAIdempotent
Acknowledge an alert (sets acknowledged=true, exactly like the "Acknowledge" list action), optionally with a work note. Already-acknowledged alerts are reported, not re-written. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| work_notes | No | Optional work note to add | |
| number_or_sysid | Yes | Alert number or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the exact field mutated (acknowledged=true), the idempotent behavior on repeat calls, and that a work note is optional. It does not cover permissions or the response payload, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with the effect stated first, then the parity comparison, then the idempotency caveat. The trailing '**[Write]**' tag is mildly redundant given readOnlyHint=false, but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter write tool with no output schema, the description covers the mutation, idempotency, and the optional note. The only gap is that it hints at but doesn't state what the response contains for already-acknowledged alerts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the schema already carries their meaning. The description only reinforces that work_notes is optional and attached to the acknowledgement, which is marginal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Acknowledge an alert') and pins down the exact effect ('sets acknowledged=true, exactly like the "Acknowledge" list action'). It does not explicitly contrast with siblings like update_alert or close_alert, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note that already-acknowledged alerts are 'reported, not re-written' implicitly says when this call is a no-op, which helps selection. However, there is no explicit guidance on choosing this over update_alert or close_alert, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
act_on_vr_approvalA
Approve or reject a Vulnerability Response approval (sysapproval_approver) by sys_id, which advances the attached workflow and transitions the underlying VR record. Rejection requires a comment. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | approve or reject | |
| sys_id | Yes | 32-char sys_id of the sysapproval_approver record | |
| comments | No | Comment/justification (required when action=reject) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing downstream effects: advancing the attached workflow and transitioning the underlying VR record, plus the rejection-requires-comment rule and the WRITE_ENABLED=true gate. It does not state whether a completed approval is reversible or what happens if the workflow is already advanced, which is notable given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a bracketed prerequisite note; the action, the object, the side effect, and the rejection constraint are all front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation with full schema coverage and no output schema, this covers the essentials: valid target record, observable side effects, and the write-enable prerequisite. Missing only failure-mode behavior (invalid/already-resolved sys_id, workflow state conflicts).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already explains sys_id, the action enum, and that comments are required on reject. The description restates the rejection/comment rule without adding format, length, or example guidance, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (approve/reject) and a precisely scoped resource (Vulnerability Response approval, sysapproval_approver) keyed by sys_id. This clearly separates it from the generic approve_request/reject_request and the read-only list_vr_approvals sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Scope is implied by naming the VR approver table, so an agent can infer this is the VR-specific alternative to generic approval tools, but no sibling is named and there is no explicit when-not guidance. The WRITE_ENABLED prerequisite is a useful gate but is framed as a caveat, not a usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_commentA
Add a customer-visible comment to any ITSM record (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Table name (e.g., "incident") | |
| sys_id | Yes | System ID of the record | |
| comment | Yes | Comment text (visible to end user/caller) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey the write nature (readOnlyHint=false) and non-idempotency. The description adds valuable context: the comment is customer-visible and requires WRITE_ENABLED=true. This goes beyond the annotations and gives the agent important operational knowledge.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that conveys the core action, scope, and a critical requirement. No fluff, front-loaded with the verb, and all words earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter tool with fully described schema and annotations, the description is complete enough for invocation. It does not discuss return values, but since there is no output schema and the operation is straightforward, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes each parameter, including 'Comment text (visible to end user/caller)'. The description adds little beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add'), identifies the resource ('customer-visible comment'), and scopes it to 'any ITSM record'. It clearly distinguishes from the sibling 'add_work_note' by specifying the comment is customer-visible, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context ('customer-visible', 'any ITSM record') and a prerequisite ('requires WRITE_ENABLED=true'). It implies when to use this tool vs. internal work notes, but it does not explicitly name an alternative or state 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.
add_user_to_groupA
Add a user to a group (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| user_sys_id | Yes | System ID of the user | |
| group_sys_id | Yes | System ID of the group |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=false), the description discloses the WRITE_ENABLED=true requirement. This adds operational context not present in the annotations, though it does not cover idempotency or duplicate membership behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence that front-loads the purpose and includes a key requirement. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool, the description plus schema and annotations provide sufficient context. It names the operation and a key prerequisite, though it could mention what happens if the user is already in the group, but this is not critical given the sibling tool context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters have clear descriptions ('System ID of the user' and 'System ID of the group'). The description adds no additional information beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a user to a group' with a specific verb and resource, distinguishing it from sibling tools like 'remove_user_from_group' and 'update_group'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a necessary prerequisite (WRITE_ENABLED=true) but no explicit guidance on when to use this tool versus alternatives like remove_user_from_group. Usage context is implied by the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_vi_to_remediation_taskA
Associate a Vulnerable Item with a remediation group via the "Remediation Task Item" m2m (sn_vul_m2m_vul_group_item). The group is an sn_vul_vulnerability record that backs the remediation task. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| vulnerable_item | Yes | sys_id of the Vulnerable Item to add | |
| remediation_group | Yes | sys_id of the sn_vul_vulnerability group backing the remediation task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false, and the description adds a genuinely useful operational constraint: the call requires WRITE_ENABLED=true. It also discloses the underlying m2m table, which explains that this writes a link record rather than modifying either entity. It does not warn about duplicate associations despite idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the action and mechanism come first, the entity semantics second, and the bolded write/environment requirement last where it is easy to scan. The m2m table name is implementation-level but still earns its place by clarifying the write target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter write tool with full annotation coverage and no output schema, the description supplies what matters: what relationship is created, which record type the group must be, and the environment flag needed to succeed. The main gap is behavior on an already-existing association, which matters given idempotentHint=false.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters already document themselves as sys_ids, so the baseline of 3 applies. The description largely restates the schema's explanation of the remediation_group ('backs the remediation task'), adding a little entity context but no new naming, format, or lookup guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (associate) and the exact relationship being created (Vulnerable Item ↔ remediation group via sn_vul_m2m_vul_group_item), so an agent can distinguish it from create_remediation_task or list_remediation_task_findings. It stops short of explicitly naming those siblings as alternatives, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'the group is an sn_vul_vulnerability record that backs the remediation task' tells the agent what the remediation_group parameter must point to, which implies this tool is for linking, not creating tasks. There is no explicit when-to-use vs. create/update_remediation_task guidance or prerequisite ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_work_noteA
Add an internal work note to any ITSM record (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | Work note text (internal, not visible to end user) | |
| table | Yes | Table name (e.g., "incident", "change_request") | |
| sys_id | Yes | System ID of the record |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only operation (readOnlyHint=false). The description adds the 'internal' nature (not visible to end user) and the WRITE_ENABLED requirement. These provide some context beyond annotations, but the description does not explain what happens on failure or whether the note is appended or overwrites existing content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action and a key prerequisite. No redundant filler or restatement of the tool name. It earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation with a fully described schema, the description is adequate but minimal. It omits what happens on success (e.g., return value) or failure, and whether the note is added to the activity log. Since no output schema exists, a bit more detail about effects would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents each parameter. The description adds no extra meaning beyond the schema, such as format of sys_id or examples for table. It only restates that it works on 'any ITSM record', which aligns with the table parameter's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add'), the specific resource ('internal work note'), and the scope ('any ITSM record'). The word 'internal' distinguishes it from sibling tool 'add_comment', which presumably adds a visible comment, so the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives like 'add_comment' or 'update_record'. It mentions a prerequisite ('requires WRITE_ENABLED=true'), but this is a constraint rather than usage direction. No exclusions or alternative tool references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_searchARead-onlyIdempotent
Semantic AI-powered search across KB, catalog, incidents (ServiceNow AI Search)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 10) | |
| query | Yes | Natural language search query | |
| sources | No | Sources to search: ["kb", "catalog", "incident"] (default: all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld hints, so the bar is lower. The description adds context about the semantic AI-powered nature, which is a behavioral trait beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 12 words, front-loaded with key info, no wasted words. Every part contributes to understanding the tool's core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations and schema, the description sufficiently covers what the tool does. It lacks mention of return format or pagination but is complete enough for an AI to select this tool over siblings. No output schema exists, so some inference is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema listings for query, sources, and limit. It matches but does not enrich the parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs semantic AI-powered search across specific resources (KB, catalog, incidents), using a specific verb. It distinguishes from siblings like search_knowledge or search_catalog by indicating it covers multiple sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for cross-source search but does not explicitly state when to use this tool versus alternatives like natural_language_search or individual source searches. No exclusions or when-not-to-use guidance provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_data_qualityARead-onlyIdempotent
Analyse data quality for a table — completeness, duplicates, stale records
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Table to analyse | |
| days_stale | No | Consider records stale after N days without update (default 180) | |
| required_fields | No | Comma-separated fields that should be populated |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint. Description adds context on what aspects are checked but doesn't detail how (e.g., whether it samples or scans all records). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise, one sentence that front-loads the purpose. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Does not explain the output format or return value. An agent needs to know whether results are returned as scores, lists, or something else to interpret them correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive parameter descriptions. The tool description hints at how parameters relate to quality checks but adds minimal additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it analyzes data quality for a table, listing specific aspects (completeness, duplicates, stale records). This differentiates it from siblings like check_table_completeness which likely focuses only on completeness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like check_table_completeness or compare_record_counts. Usage is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_requestAIdempotent
Approve a pending approval request (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the approval record | |
| comments | No | Optional approval comments |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate write operation (readOnlyHint=false) and idempotency (idempotentHint=true). Description adds the WRITE_ENABLED prerequisite, which is useful. However, it does not disclose side effects (e.g., workflow triggers, notifications) or post-approval behavior, leaving room for improvement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with critical prerequisite in parentheses. No superfluous words. Front-loaded with verb and resource. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain what the tool returns (e.g., success status, updated record) and any side effects (e.g., workflow triggers). It does not. For an approval tool with moderate complexity, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The description does not add additional semantic information about the parameters beyond what the schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description specifies the verb 'Approve' and the resource 'pending approval request', clearly distinguishing from sibling tools like reject_request and list_approvals. It includes a prerequisite, making the purpose immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a required condition (WRITE_ENABLED=true). While it does not provide explicit when-to-use vs when-not-to-use, the verb and sibling context implicitly guide usage: this tool is for approving, not canceling or rejecting. Missing explicit exclusions, but clear overall.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_get_propertiesB
Retrieve multiple system property values in a single call
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | Array of property names to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation contradiction: annotations declare readOnlyHint=false and idempotentHint=false, while the description states 'Retrieve' which implies a read-only, idempotent operation. The description does not disclose any additional behavioral traits such as limits, authentication, or error semantics, and contradicts the provided annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, zero wasted words. The description is front-loaded with the action and object, making it immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool lacks an output schema and the description does not mention return format, constraints, or error behavior. More importantly, the annotation contradiction undermines trust and the description is not sufficient to resolve it. For a simple tool, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the single parameter 'names' as an array of property names with 100% coverage. The description adds no extra parameter context beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('retrieve') and resource ('system property values'), and explicitly scopes to 'multiple' and 'single call', distinguishing it from single-property getters like get_system_property and listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching multiple property values at once but does not explicitly contrast it with alternatives or state when not to use it. It lacks explicit when/when-not guidance, though the intent is reasonably clear from the wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_set_propertiesAIdempotent
Create or update multiple system properties in a single operation. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| properties | Yes | Array of {name, value, description?} objects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and non-destructive behavior. The description adds transparency about the upsert behavior (create or update) and the batch nature, which are not fully captured by annotations. However, it omits details on error handling or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence and a brief tag, containing zero wasted words. It front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (batch upsert, no output schema), the description is adequate but misses important context such as maximum batch size, error reporting, and return value format. It covers the core functionality but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides high coverage (100%) with a clear structure for the 'properties' array. The description adds minimal extra semantics beyond restating that it operates on multiple system properties. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create or update multiple system properties in a single operation,' specifying the action (create/update), resource (system properties), and batch scope. It distinguishes from the sibling tool 'set_system_property' which operates on a single property.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for batching but does not explicitly state when to use this tool over alternatives like 'set_system_property' or 'import_properties'. No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_requestADestructive
Cancel an open service catalog request (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | sc_request sys_id | |
| comments | No | Reason for cancellation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds the requirement for WRITE_ENABLED and specifies that the request must be 'open', providing useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no unnecessary words. Straightforward and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides essential context: it cancels an open request and requires a specific configuration. It is sufficient for the agent to understand the tool's function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover both parameters with adequate detail. The description does not add significant extra meaning beyond the schema context of 'open service catalog request'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Cancel' and the resource 'open service catalog request'. The prerequisite 'requires WRITE_ENABLED=true' adds specificity. This distinguishes it from siblings like 'approve_request' and 'reject_request'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite (WRITE_ENABLED=true) and implies usage for open requests. However, it does not explicitly state when not to use it (e.g., if the request is already closed) or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
categorize_incidentARead-onlyIdempotent
Use Predictive Intelligence to predict category, assignment group, and priority (latest release: LightGBM algorithm)
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | Optional full description for better accuracy | |
| short_description | Yes | Incident short description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, open-world behavior. Description adds algorithm version but no additional behavioral traits like error handling or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with purpose, no redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and description does not describe the prediction result format. For a tool that returns predictions, the output structure is crucial context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides full descriptions for both parameters. Description adds 'for better accuracy' but no new semantic detail beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it predicts category, assignment group, and priority using Predictive Intelligence with LightGBM. It distinguishes from sibling tools like ml_train_incident_classifier and get_incident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use for prediction on incident data, but does not explicitly state when to use vs alternative prediction tools or exclude scenarios. No when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_app_upgradeARead-onlyIdempotent
Compare the installed version of a scoped app (from sys_scope on the instance) against the public Store version history, and return the release notes of every newer version. For upgrade planning of Store apps (VR, ACC Framework, ...), whose lifecycle is independent of platform upgrades. Provide either listing_id, or store_query / nothing to search by app name.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | App scope on the instance, e.g. "sn_vul", "sn_agent" | |
| max_newer | No | Max newer versions to return, newest first (default 10, max 20) | |
| listing_id | No | 32-char Store listing sys_id (skips the catalog search) | |
| store_query | No | Override the Store search keywords (default: the app name from sys_scope) | |
| include_notes | No | Include release notes for newer versions (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety and external-network behavior are covered structurally. The description adds the data-flow detail (installed version sourced from sys_scope, compared against public Store history) and that release notes are returned, but says nothing about failure modes when an app is not found in the Store or how the catalog search resolves ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and then the use case, with no filler. The second sentence is a sentence fragment ('For upgrade planning of...'), which reads slightly awkwardly, but the content earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of describing results, and it does state that the release notes of every newer version are returned. Remaining gaps (ordering limits, behavior when no newer version exists) are minor for a read-only diagnostic tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds genuine routing semantics beyond the schema: the listing_id vs store_query vs default-app-name fallback chain. That mutual-exclusivity/fallback logic is not obvious from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: compares the installed version (from sys_scope on the instance) against the public Store version history and returns release notes for newer versions. The comparison framing implicitly separates it from get_store_app_versions/search_store_apps, but it never names those siblings, so an agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context – 'For upgrade planning of Store apps (VR, ACC Framework, ...), whose lifecycle is independent of platform upgrades' – which tells the agent when this applies versus platform-upgrade tooling. It also routes between parameter modes ('Provide either listing_id, or store_query / nothing'), but offers no explicit 'do not use when' exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_table_accessARead-onlyIdempotent
Diagnose the connected service account's effective access to one or more tables BEFORE attempting operations. Returns per-table readable/writable flags plus a status that distinguishes WHY access failed: "not_installed" (Invalid table — the table does not exist, e.g. plugin/app not installed), "no_access" (403 — table exists but ACL denies this account), "empty" (readable but zero rows — truly empty or ACL row filtering), or "accessible". Also returns the account's current user and assigned roles. Read is probed with a sysparm_limit=1 GET; write is probed non-destructively with an empty PATCH to a reserved all-zero sys_id (404=writable, 403=denied) — no record is ever created or modified. Useful to check whether a plugin is installed and to avoid "User Not Authorized" retries.
| Name | Required | Description | Default |
|---|---|---|---|
| tables | Yes | Table names to check (max 20), e.g. ["incident", "sn_vul_vulnerable_item"] | |
| check_write | No | Also probe write access via a non-destructive empty PATCH (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already declared, the description goes further by explaining exactly how access is probed (sysparm_limit=1 GET for reads; empty PATCH to a reserved all-zero sys_id for writes, with 404=writable/403=denied) and explicitly guarantees 'no record is ever created or modified'. This resolves the apparent tension between a PATCH and a readOnly annotation rather than contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical guidance ('BEFORE attempting operations', the status vocabulary, the non-destructive guarantee) is front-loaded. It runs a bit long with the parenthetical status enumeration, but every clause carries actionable information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates fully by enumerating the return fields (per-table readable/writable flags, status values with their meanings, current user and roles). For a two-parameter diagnostic tool with annotations, nothing an agent needs before calling is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by explaining the mechanism behind check_write (non-destructive empty PATCH) and what its outcome signifies. The 'tables' parameter's max-20 cap is left to the schema, which documents it adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Diagnose the connected service account's effective access to one or more tables') and immediately contrasts with operational siblings by saying it runs BEFORE attempting operations. An agent can distinguish this from describe_table, query_records, or get_record without inspecting any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the when: 'BEFORE attempting operations' and names two concrete use cases (verifying a plugin is installed, avoiding 'User Not Authorized' retries). It stops short of naming the alternative tools to call after a successful check, so it is strong context rather than a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_table_completenessBRead-onlyIdempotent
Analyze data quality and field completeness for a ServiceNow table — returns percentage of non-empty values per field
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional encoded query to scope the analysis (e.g. "active=true") | |
| table | Yes | Table name to analyze (e.g. "incident", "cmdb_ci_server") | |
| fields | Yes | Comma-separated field names to check (e.g. "assigned_to,priority,category") | |
| sample_size | No | Number of records to sample (default 100, max 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, indicating a safe, idempotent, and open-world operation. The description adds the output detail (percentage returns) but does not elaborate on other behavioral aspects like sampling behavior or error handling. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the tool's purpose. However, it could be improved by front-loading the most critical information, such as the resource and verb, which it does, but it lacks structure for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a high-level overview but does not explain the return format (e.g., dictionary of field names to percentages), pagination, or potential limitations (e.g., sampling behavior). Given no output schema, this omission is a gap. The description is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%—all four parameters have descriptions in the schema. The tool description does not add any additional meaning beyond the schema. Baseline score of 3 applies since the schema already documents parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Analyze', the resource 'data quality and field completeness for a ServiceNow table', and the output 'returns percentage of non-empty values per field'. It is specific and distinguishes from sibling tools like 'analyze_data_quality' by focusing on field-level completeness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'analyze_data_quality', 'get_table_record_count', or 'query_records'. The sibling list includes many related tools, but the description does not help the agent decide when to select this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_artifactA
Clone a platform artifact to a new name/scope. [Scripting]
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Source artifact table | |
| sys_id | Yes | Source artifact sys_id | |
| new_name | Yes | Name for the cloned artifact | |
| target_scope | No | Target application scope (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description adds a minimal verb but no extra behavioral context such as whether the original is preserved, what fields are copied, or if scope is required. It does not contradict annotations, but also does not enrich them beyond the basic clone semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's purpose. The [Scripting] tag adds minimal but potentially useful context. Every word earns its place with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a straightforward clone operation with all parameters documented in the schema. There is no output schema, and the description does not explain return behavior or side effects. Given its simplicity and full schema coverage, the minimal description is acceptable but does not go beyond the bare essentials.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for each parameter (table, sys_id, new_name, target_scope). The description's 'new name/scope' phrasing maps to the new_name and target_scope parameters, but adds no extra detail beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Clone') and resource ('platform artifact') with explicit outcome ('to a new name/scope'). It clearly distinguishes itself from sibling artifact tools like push_artifact, pull_artifact, and sync_status by focusing on duplication rather than transfer or synchronization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or comparisons to similar artifact operations. The context is implicit from the verb 'clone,' but no explicit when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_alertADestructive
Close an alert (state=Closed, like the "Close" action; also acknowledges it when evt_mgmt.alert_ack_on_close is true), optionally with a work note. Refuses alerts that are already Closed. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| work_notes | No | Optional closing note | |
| number_or_sysid | Yes | Alert number or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as destructive, non-idempotent, and open-world, so the description's job is to add context — and it does: the resulting state, the conditional acknowledgment side effect when evt_mgmt.alert_ack_on_close is true, and a documented failure mode for already-Closed alerts. It does not describe permissions required or the response payload, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence states the action, the resulting state, the conditional side effect, and the refusal precondition with zero filler. The [Write] marker is a compact safety signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with rich annotations and no output schema, this covers the state transition, the side effect, the precondition, and optionality of the note. Only the error/return behavior and any permission requirements remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented there, so the schema carries the semantics. The description only adds that the work note is optional at close time, which is a marginal addition beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (close an alert) plus the resulting state (state=Closed), which is more than a restatement of the name. It also hints at the acknowledge side effect, which separates it from acknowledge_alert, but it never names that sibling explicitly, so differentiation is implicit rather than spelled out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one useful precondition (refuses alerts already Closed) and implies the tool is for final resolution, but it never says when to prefer acknowledge_alert or update_alert instead. An agent must infer the routing from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_change_requestADestructive
Close a change request with close code and notes (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the change request | |
| close_code | Yes | Close code (e.g., "successful", "unsuccessful") | |
| close_notes | Yes | Closure notes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior, so the description does not need to restate that. It adds the operational requirement 'requires WRITE_ENABLED=true', which is useful context beyond annotations. However, it does not disclose other behavioral details such as state transitions or irreversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action and resource, includes the key requirement, and has no wasted words. It communicates the essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with full annotations and complete parameter schema, the description covers the core action and a prerequisite. It lacks output schema or error handling details, but for a straightforward close operation, this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (sys_id, close_code, close_notes) already described. The description merely mentions close code and notes without adding new detail, so it does not add significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Close' targeting the 'change request' resource, with close code and notes as key parameters. This clearly distinguishes it from sibling tools like close_incident, close_hr_case, and update_change_request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for closing change requests and mentions a prerequisite (WRITE_ENABLED=true), but does not explicitly contrast with alternatives like update_change_request or state when closing is appropriate. The guidance is present but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_csm_caseADestructive
Close a CSM case with resolution details (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the CSM case | |
| resolution_code | No | How the case was resolved | |
| resolution_notes | Yes | Detailed resolution notes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the mutation risk is known. The description adds the WRITE_ENABLED prerequisite, which is useful, but it does not disclose consequences such as the case being irreversibly moved to a closed state or any side effects. Given the annotation coverage, the description adds minimal context beyond the requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the action and object, followed by the key permission requirement. There is no wasted wording, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter tool, the description is adequate but missing context about the closing workflow—it doesn't explain that closing is typically a terminal action or what response the agent should expect. The lack of an output schema means the return value is unspecified, and the description does not clarify whether the tool returns the closed case or a simple success indicator. Still, the essential purpose and required permission are covered, earning a moderate score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already documented with a concise description. The description's phrase 'with resolution details' only reinforces the importance of resolution_notes but adds no new syntax, format, or value constraints beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Close') and resource ('CSM case') with the qualifier 'with resolution details', distinguishing it from sibling tools like create_csm_case, get_csm_case, and update_csm_case. It also names the permission prerequisite, although that's not purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus update_csm_case or close_incident. It does not state that closing is a final action or that it should be used after resolution is complete. There are no explicit exclusions or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_hr_caseADestructive
Close an HR case with resolution notes (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the HR case | |
| close_code | No | Closure code (e.g., "Resolved", "Withdrawn") | |
| close_notes | Yes | Resolution or closure notes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false). The description adds the WRITE_ENABLED=true prerequisite, which is useful operational context, but doesn't elaborate on irreversibility, side effects (despite openWorldHint=true), or return behavior. No contradiction with annotations, but limited additional behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence: 'Close an HR case with resolution notes (requires WRITE_ENABLED=true).' It conveys the verb, resource, input, and a critical prerequisite with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with rich annotations (destructiveHint, readOnlyHint, idempotency, openWorld) and full schema coverage, the description and annotations together provide a solid operational picture. The WRITE_ENABLED prerequisite is a valuable addition. The only omission is return value/confirmation behavior, which is minor given the simple close action and lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (sys_id, close_code, close_notes) already documented. The description's 'with resolution notes' merely reiterates the close_notes parameter without adding format, examples, or constraints. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Close' with the explicit resource 'HR case', clearly distinguishing it from sibling tools like close_incident, close_change_request, and update_hr_case. The 'with resolution notes' phrase adds meaningful specificity about the tool's primary function, making it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for closing HR cases with resolution notes, but provides no explicit guidance on when not to use it or which alternatives apply (e.g., update_hr_case for non-closing modifications, close_csm_case for CSM cases). An agent relies primarily on the tool name and sibling context rather than explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_incidentADestructive
Close a resolved incident (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the incident |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a destructive, non-read-only operation, so the description adds extra context by specifying the WRITE_ENABLED=true requirement and the precondition that the incident must be resolved. This goes beyond what annotations provide, though it omits details about side effects or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the verb and object, with a useful parenthetical for the permission requirement. No wasted words; every part contributes to understanding the tool's purpose and precondition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description covers essential aspects: what it does, when it can be used (resolved incident), and a system-level requirement. It does not explain return values, but since annotations and schema are already rich, this is sufficient. Minor gap is lack of detail on what 'closing' implies beyond the annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage on the single parameter sys_id, so the description need not elaborate. The description does not add any additional meaning about parameters, which is acceptable given the schema's clarity. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Close') and a specific resource ('incident'), and further qualifies it as 'resolved incident', which clearly distinguishes this tool from siblings like resolve_incident or update_incident. The parenthetical about WRITE_ENABLED adds a clear precondition, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: only for incidents that have been resolved. It also identifies a prerequisite (WRITE_ENABLED=true). However, it does not explicitly name alternatives or state when not to use it, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cmdb_health_dashboardARead-onlyIdempotent
Get CMDB data quality metrics (completeness of server and network CI data)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds that it returns metrics on completeness but does not disclose output structure, caching, or rate limits. With annotations present, the description provides minimal additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded and contains no extraneous information. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description only vaguely mentions 'metrics (completeness of server and network CI data)', leaving the return format and structure unclear. With openWorldHint, the agent may expect a collection but lacks detail on field names or types.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100% (vacuous). The description correctly implies no input is needed, so it fully compensates for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Get' and resource 'CMDB data quality metrics' with explicit scope 'completeness of server and network CI data', clearly distinguishing it from sibling tools like 'analyze_data_quality' or 'check_table_completeness'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'analyze_data_quality' or 'cmdb_impact_analysis'. The description implies a specific dashboard context but lacks comparative or exclusionary advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cmdb_impact_analysisB
Analyze the downstream impact of a Configuration Item change or outage
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Relationship depth to traverse (default: 2) | |
| ci_sys_id | Yes | CI sys_id to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true) suggest possible side effects, but the description fails to elaborate on behavioral traits such as whether analysis creates records or has performance implications, leaving ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that quickly conveys the tool's purpose, although it could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should at least hint at the output format or behavior (e.g., returns a graph or list). It does not, leaving agents uncertain about what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema provides full descriptions for both parameters (ci_sys_id and depth). The description adds no additional meaning beyond what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'analyze' and the resource 'downstream impact of a Configuration Item change or outage', distinguishing it from sibling tools like search_cmdb_ci or cmdb_health_dashboard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for impact analysis but offers no explicit guidance on when to use this tool versus 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.
commit_changesetADestructive
Commit an update set (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the update set |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description correctly implies mutation. It adds the prerequisite condition, which is helpful, but doesn't describe consequences (e.g., irreversible changes, side effects).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous words. It efficiently communicates the action and a key requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with annotations covering destructiveness, the description is nearly complete. It includes a prerequisite. Could mention irreversibility but not essential. No output schema needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with a clear description for 'sys_id'. The tool description adds no extra semantic value beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Commit') and resource ('update set'), distinct from sibling tools like 'publish_changeset' or 'complete_update_set'. It also adds a prerequisite condition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a prerequisite (SCRIPTING_ENABLED=true) but offers no guidance on when to use this tool versus alternatives like 'publish_changeset' or 'complete_update_set'. No context on 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.
compare_record_countsBRead-onlyIdempotent
Compare record counts across multiple ServiceNow tables or time periods — useful for capacity planning
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional query to apply to all tables | |
| tables | Yes | List of table names to compare (e.g. ["incident", "change_request", "problem"]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, indicating a safe, repeatable operation. The description adds 'useful for capacity planning' but no further behavioral details (e.g., behavior on missing tables, output format). It does not contradict annotations, so a baseline of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence front-loaded with the verb and resource. It is concise with no wasted words, though the mention of 'time periods' could be removed or aligned with actual parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations cover safety and schema describes parameters, the description is adequate for a read-only comparison tool. However, it lacks explanation of the comparison format (e.g., return structure) and the 'time periods' feature is not supported, leaving some context gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters ('tables' and 'query'). The description adds no new parameter insight and introduces 'time periods' which is not a parameter, potentially confusing. The description fails to add value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares record counts across multiple tables or time periods, with a specific verb and resource. It distinguishes from sibling tools like 'get_table_record_count' which likely handles single tables, but the mention of 'time periods' is not reflected in the input schema, causing minor ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes it is 'useful for capacity planning', providing a usage context. However, it does not explicitly state when to use this tool versus alternatives like 'get_table_record_count' or 'trend_query', nor does it offer exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_taskAIdempotent
Mark a task as complete (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the task | |
| close_notes | No | Optional closure notes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which show idempotentHint=true), the description adds the precondition 'requires WRITE_ENABLED=true', which is an important behavioral constraint. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that includes the essential action and a prerequisite. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with annotations covering idempotency, the description is sufficient. However, it lacks any mention of return values or confirmation, which would improve completeness, especially given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers both parameters with descriptions (100% coverage). The tool description adds no additional meaning beyond what the schema already provides, earning a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Mark a task as complete') and includes a precondition (WRITE_ENABLED=true). It is specific enough to distinguish from sibling tools like 'close_incident' which target specific types, but it does not explicitly compare itself to them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a functional requirement (WRITE_ENABLED=true), which provides guidance on when the tool can be used. However, it does not advise against using it for specific task types or reference alternative tools like 'close_incident'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_update_setCIdempotent
Mark an Update Set as complete (ready for migration). [Scripting]
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Update Set sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral context beyond annotations. It indicates a state change ('complete') but doesn't mention reversibility, triggers, or side effects. Annotations already provide idempotentHint and non-destructiveHint, so the description adds little value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with a minimal tag. It is efficient and front-loaded, though it sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple action with one parameter and no output schema, the description is adequate but lacks context on what 'complete' means in the system workflow or any prerequisites. It meets minimum viability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter (sys_id) completely, so the description doesn't need to add parameter details. Baseline 3 is appropriate as the description offers no additional parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Mark an Update Set as complete') and the resource ('Update Set'), with the purpose being ready for migration. It distinguishes from siblings like create_update_set or export_update_set, though it doesn't explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as preview_update_set or commit_changeset. The '[Scripting]' tag hints at context but is insufficient for clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_offline_syncCIdempotent
UNSUPPORTED: offline configuration requires a validated Mobile App Builder workflow. No state-table writes are performed. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter query for sync scope | |
| table | Yes | Table to sync offline | |
| max_records | No | Max offline records (default 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does add non-schema context (a required prerequisite workflow, and a claim of no state-table writes), which counts for something. But 'No state-table writes are performed' combined with 'UNSUPPORTED' conflicts with annotations declaring readOnlyHint=false and a '[Write]' marker — the safety profile the agent is given is internally inconsistent and unresolved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the most important fact ('UNSUPPORTED') front-loaded; nothing is padded. The trailing '**[Write]**' marker is formatting noise rather than substance, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stub/no-op tool with no output schema and fully documented params, saying 'unsupported, requires X' is close to sufficient. It still leaves the agent without a next step (what to call instead) and without resolving whether any write occurs, so it is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (query, table, max_records each documented, with the 500 default stated), so the schema carries parameter meaning on its own. The description adds nothing about parameters, which is acceptable at this coverage level but no better than baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states what configuring offline sync actually does; its content is a negative status ('UNSUPPORTED') plus a precondition about a Mobile App Builder workflow. It does at least tell an agent the resource domain (offline configuration) and that the tool is not usable, which is more than a bare tautology, but the function itself is never described.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'UNSUPPORTED' and 'requires a validated Mobile App Builder workflow' function as an explicit exclusion plus a prerequisite, which is useful routing signal. However, no sibling alternative is named — plausible substitutes like get_mobile_app_config, create_mobile_app_config, or list_mobile_app_configs are never referenced, so the agent is left to guess the replacement path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_workspace_listAIdempotent
Create a legacy sys_aw_list configuration under an existing Agent Workspace. query maps to the condition column. Does not update existing lists or configure UX lists. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Encoded query filter | |
| table | Yes | List table | |
| title | Yes | List title | |
| columns | No | Comma-separated field names | |
| workspace_sys_id | Yes | Workspace sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the '[Write]' tag is largely redundant. The description does add useful behavior beyond annotations: the workspace must pre-exist and existing lists are not updated. It does not explain duplicate handling, permissions, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact clauses: what it creates, the query mapping, the exclusions, the write marker. Front-loaded with the core action and no filler, though the trailing '[Write]' tag adds little the annotations don't already say.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Five parameters with full schema descriptions and rich annotations mean the description only needs to cover intent and edge cases, which it mostly does. The one gap is return behavior for a create operation (e.g., whether a sys_id comes back), which matters for chaining.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real semantic value by clarifying that 'query' maps to the condition column rather than being a free-form search string. Other parameters (table, title, columns, workspace_sys_id) are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a legacy sys_aw_list configuration') and scopes it to an existing Agent Workspace, which is far more precise than the tool name alone. It also distinguishes itself from UX list configuration and from updating existing lists, though it does so conceptually rather than by naming sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear prerequisite ('under an existing Agent Workspace') and explicit exclusions ('Does not update existing lists or configure UX lists'), which lets an agent rule out this tool for edit and UX-list cases. It stops short of naming the alternative tool an agent should use instead for those cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_aclA
Create a new ACL rule to control access to a table or field (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ACL name (typically "table.field" or "table.*") | |
| type | No | "record" | "field" | "rest_endpoint" | "soap_endpoint" | |
| roles | No | Comma-separated roles required (e.g. "admin,itil") | |
| active | No | Whether to activate immediately (default: true) | |
| script | No | Optional condition script (return true to allow) | |
| operation | Yes | "read" | "write" | "create" | "delete" | "execute" | |
| description | No | Description of this access rule | |
| admin_overrides | No | Allow admin to override (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the important prerequisite that SCRIPTING_ENABLED=true is required, which is not present in the annotations. It also clarifies that the tool creates a persistent access rule. Since annotations already indicate mutation (readOnlyHint=false) and non-destructiveness, the description provides extra context without contradicting the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the main action ('Create a new ACL rule') and includes the crucial prerequisite in parentheses. Every word earns its place; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the full input schema and annotations, the description provides sufficient context for an agent to understand the tool's purpose and the key requirement (SCRIPTING_ENABLED=true). It doesn't mention return values, but with no output schema defined, this is not critical. The tool is moderately complex (8 params), but the schema fills in the details, making the description adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all 8 parameters with individual descriptions (100% coverage), so the parameter semantics are well documented. The description itself adds little beyond the schema, only hinting at the use case rather than explaining any parameters. Thus, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create'), names the resource ('ACL rule'), and states the purpose ('to control access to a table or field'). It clearly distinguishes from sibling tools like list_acls, get_acl, and update_acl by emphasizing creation of a new rule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when creating a new ACL rule to manage access) and provides a critical prerequisite (SCRIPTING_ENABLED=true), but it does not explicitly mention alternatives or exclusions (e.g., 'use update_acl to modify an existing rule'). This gives clear context without full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_approval_ruleA
Create an approval rule that automatically generates approval requests when a record matches given conditions (requires WRITE_ENABLED=true). Uses the sysapproval_rule table.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Rule name | |
| order | No | Execution order relative to other rules (default: 100) | |
| table | Yes | Table this rule applies to (e.g. "sc_request", "change_request") | |
| active | No | Activate the rule immediately (default: true) | |
| approver | Yes | sys_id of the approving user or group | |
| condition | No | Encoded query that determines when the rule fires (leave blank for always) | |
| approver_type | Yes | "user" | "group" — whether the approver is a user or a group |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and non-idempotent. The description adds valuable context beyond those annotations: the automatic generation of approval requests, the WRITE_ENABLED=true requirement, and the use of the sysapproval_rule table. This gives the agent a better sense of side effects and prerequisites without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, followed by the permission requirement and table detail. Every word earns its place; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (7 params all documented, write operation) and the presence of annotations, the description covers the essential behavioral context: what the tool does, a key prerequisite, and the storage table. It does not describe return values, but the lack of an output schema makes that less critical. A small omission is not explicitly mentioning that 'condition' blank means always fire, but that is present in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with each of the 7 parameters described. The description does not provide additional parameter-level detail beyond what the schema already states (e.g., it references 'conditions' which maps to the 'condition' field, but that field is already described as 'Encoded query that determines when the rule fires'). With high schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear, specific action ('Create an approval rule') with a precise behavioral outcome ('automatically generates approval requests when a record matches given conditions'). It distinguishes this tool from siblings like approve_request or create_flow by focusing on rule creation rather than individual approval or flow automation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: when a user needs to set up an automated approval rule based on record conditions. It also notes a prerequisite (WRITE_ENABLED=true) and mentions the underlying table, which aids in context. However, it does not explicitly name alternatives or exclusions (e.g., 'use create_flow for complex routing'), so it stops 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.
create_archive_ruleA
Create an inactive archive rule under an existing Data Management Policy. retain_references can only be chosen at creation. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| condition | Yes | ||
| description | No | ||
| policy_sys_id | Yes | ||
| auto_rearchive | No | ||
| retain_references | No | Immutable after creation; preserves reference sys_ids in future archive rows. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag it as a write (readOnlyHint=false, destructiveHint=false). The description adds real behavioral context beyond them: the rule is created INACTIVE (implying a separate activation step) and retain_references is immutable after creation. That is genuinely useful, though the openWorld/rate-limit implications are unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler, and the core constraint (inactive, requires existing policy) is front-loaded. The [Write] tag is a compact, useful signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter create tool with no output schema and very low schema description coverage, the description leaves required inputs like condition and auto_rearchive unexplained. Adequate only at a minimum-viable level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 17%, so the description should compensate but it mainly restates retain_references (already documented in the schema) and says nothing about condition syntax, auto_rearchive meaning, or policy_sys_id sourcing. Minimal added value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (create an archive rule) and pins the scope (inactive, under an existing Data Management Policy). It does not explicitly differentiate from create_destroy_rule or create_cleanup_rule, so the sibling distinction is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage context by requiring an existing policy and notes a creation-time-only parameter, but it never says when to choose this over create_destroy_rule / create_cleanup_rule or how activation works afterward (set_archive_rule_active).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_assetB
Create a new IT asset record. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| cost | No | Purchase cost | |
| model | No | Model sys_id | |
| location | No | Location sys_id | |
| asset_tag | No | Unique asset tag | |
| assigned_to | No | User sys_id | |
| cost_center | No | Cost center sys_id | |
| display_name | Yes | Asset display name | |
| purchase_date | No | Purchase date (YYYY-MM-DD) | |
| serial_number | No | Serial number | |
| model_category | No | Category sys_id (Hardware, Software, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false), and the description's '[Write]' adds no extra behavioral detail. It does not mention fields like asset_tag uniqueness, required versus optional parameters, or what happens on creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that is easy to parse. However, the '[Write]' marker is redundant given the annotations, adding slight noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters and no output schema, the description is too minimal. It fails to convey important context such as required fields, uniqueness constraints, or expected behavior beyond the schema information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of the parameters, so baseline is 3. The description itself adds no parameter-specific meaning, relying entirely on the schema for details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new IT asset record,' using a specific verb and resource. It distinguishes the tool from siblings like list_assets, get_asset, update_asset, and retire_asset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, no exclusions, and no prerequisites. The description simply states the action without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_business_ruleA
Create a new business rule (requires SCRIPTING_ENABLED=true). ServiceNow supports ES2021 async/await in scripts.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Rule name | |
| when | Yes | "before" | "after" | "async" | "display" | |
| order | No | Execution order (default: 100) | |
| table | Yes | Table this rule applies to | |
| active | No | Whether to activate the rule (default: true) | |
| script | Yes | Server-side JavaScript. ServiceNow supports ES2021 (async/await, ?., ??). | |
| condition | No | Optional condition script | |
| action_delete | No | Fire on record delete (default: false, matching ServiceNow UI default). See action_insert note. | |
| action_insert | No | Fire on record insert (default: true). Irrelevant for when="display"/"query". A rule with when="before"/"after"/"async" and action_insert/action_update/action_delete all false will never fire. | |
| action_update | No | Fire on record update (default: true). See action_insert note. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation is not read-only, not idempotent, open-world, and non-destructive. The description adds a meaningful environment prerequisite and notes ES2021 async/await support, but does not mention duplicate-name behavior, return value, or broader side effects of creating a rule.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and a critical prerequisite. There is no redundant or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter creation tool with no output schema, the description covers the key enablement prerequisite but omits what is returned after creation and any duplicate or failure behavior. The rich input schema and annotations compensate partially, but the definition remains only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 10 parameters thoroughly. The description does not add parameter-level semantics beyond noting that scripts support ES2021 features, which the schema also states for the script field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create') and resource ('business rule'), making its purpose clear. It does not explicitly differentiate from sibling tools such as update_business_rule or list_business_rules, but the create semantics are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Adds a useful prerequisite ('requires SCRIPTING_ENABLED=true'), which helps determine whether the tool can be used. However, it gives no explicit guidance on when to use this versus update_business_rule, list_business_rules, or other rule-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_catalog_itemA
Create a new service catalog item (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Catalog item display name | |
| price | No | Price (e.g. "0", "99.99") | |
| roles | No | Comma-separated roles that can see the item | |
| active | No | Make the item available in the catalog (default: true) | |
| category | No | sys_id of the catalog category (sc_category) | |
| description | No | Full HTML description of the item | |
| delivery_time | No | Estimated delivery time ISO 8601 duration (e.g. "1 08:00:00" for 1 day 8 hours) | |
| short_description | Yes | One-line summary shown in search results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the prerequisite 'requires WRITE_ENABLED=true' beyond the annotations, which already indicate this is a write operation (readOnlyHint=false). It does not disclose other behavioral traits like response format or side effects, but the annotation coverage lowers the bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and front-loaded with the action and resource. It avoids unnecessary detail and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema covers all parameters and annotations provide the safety profile. The description adds the key WRITE_ENABLED prerequisite. While it doesn't mention return values, the absence of an output schema and the straightforward nature of a create operation make this sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all 8 parameters. The tool description itself adds no parameter-specific meaning beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create') and resource ('service catalog item'), making it unambiguous. It effectively distinguishes this from sibling tools like update_catalog_item and get_catalog_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context for when to use this tool: it creates a new service catalog item and requires WRITE_ENABLED=true. It doesn't explicitly exclude alternatives, but the purpose is evident from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_catalog_ui_policyA
[Write] Create a UI policy for a catalog item form
| Name | Required | Description | Default |
|---|---|---|---|
| conditions | No | Encoded condition query | |
| cat_item_id | Yes | Catalog item sys_id | |
| reverse_if_false | No | Reverse actions when condition is false | |
| short_description | Yes | UI policy description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds the [Write] prefix and the catalog item form scope, but does not disclose additional behavioral details such as whether duplicate policies are allowed or how conditions are evaluated. With annotations present, this level is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the verb and scope without any fluff. It is exactly as concise as it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple create operation with four parameters and no output schema. The description covers the core purpose but does not mention the return value or any special behavior (e.g., what happens if the catalog item ID is invalid). It is adequate but lacks additional context that would help an agent understand prerequisites or side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all four parameters, so the schema already documents each parameter's meaning. The description adds no parameter information beyond that, so it does not compensate or enhance the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('UI policy') scoped to 'a catalog item form', clearly distinguishing it from the generic create_ui_policy sibling. It is immediately obvious what this tool does and how it differs from similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this when creating a UI policy specifically for a catalog item form. It provides clear context but does not explicitly name alternatives or exclusions, such as 'for other forms use create_ui_policy'. This is clear enough for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_catalog_variableA
[Write] Add a form variable to a service catalog item
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Variable name | |
| type | Yes | Variable type: string/reference/select_box/checkbox/date/date_time/integer/multi_line_text/email | |
| order | No | Display order (default: 100) | |
| mandatory | No | Required field | |
| cat_item_id | Yes | Catalog item sys_id | |
| question_text | Yes | Label shown to user |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false) and non-destructive nature (destructiveHint=false). The description's '[Write]' prefix is redundant but consistent. However, it provides no additional behavioral context such as behavior on duplicate variable names, whether the variable is appended or replaces, or failure modes. The openWorldHint suggests possible side effects not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with a '[Write]' prefix that immediately signals the operation type. It is concise, with no wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does not explain what is returned (e.g., the sys_id of the created variable) or any error conditions. It also does not mention the dependency on an existing catalog item beyond the parameter itself. While the schema covers parameter details, the lack of return behavior and side-effect disclosure leaves the description adequate but incomplete for a write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema descriptions cover all six parameters with 100% coverage, including the allowed values for 'type'. The tool description adds no extra parameter semantics beyond what the schema already provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') and clearly identifies the resource ('form variable' to a 'service catalog item'). This distinguishes it from sibling tools like create_catalog_item, which creates the item itself, and order_catalog_item, which is a different action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool vs alternatives, nor any prerequisites such as the catalog item already existing. The description merely states what it does, leaving the agent to infer that it should be used as a sub-action for an existing catalog item.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_change_requestB
Create a new change request (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | 1=High, 2=Medium, 3=Low, 4=Very Low | |
| type | Yes | Change type: "normal", "standard", "emergency" | |
| impact | No | 1=High, 2=Medium, 3=Low | |
| cmdb_ci | No | Affected CI sys_id | |
| category | No | Change category (e.g. "Software", "Hardware", "Network") | |
| end_date | No | Planned end date (ISO: YYYY-MM-DD HH:MM:SS) | |
| priority | No | 1=Critical, 2=High, 3=Moderate, 4=Low | |
| test_plan | No | Testing and validation steps | |
| start_date | No | Planned start date (ISO: YYYY-MM-DD HH:MM:SS) | |
| assigned_to | No | Assignee username or sys_id | |
| description | No | Detailed description and justification | |
| backout_plan | No | Rollback plan if change fails | |
| assignment_group | No | Assignment group name or sys_id | |
| short_description | Yes | Brief description of the change | |
| implementation_plan | No | Step-by-step implementation plan |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate that the tool is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds the requirement WRITE_ENABLED=true, which is a behavioral constraint beyond the annotations. However, it does not disclose other behavioral traits such as side effects (e.g., triggers notifications, creates relationships) or required permissions beyond the flag. Score 3 because it adds some value but is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that includes the essential purpose and a key prerequisite. It is concise with no unnecessary words, and the information is front-loaded. Every part earns its place, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 15 parameters and 2 required, the description provides no overall context about the change request lifecycle, related tools (e.g., submit_change_for_approval), or typical usage scenarios. The schema covers parameters but the description lacks completeness for a complex tool with many siblings. This incomplete context could lead to suboptimal tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning each parameter already has a description in the input schema. The tool description does not add any parameter-specific semantics beyond what the schema provides. Following the rule, the baseline is 3 when coverage is high, and no additional parameter information is provided in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'create' and the resource 'change request', meeting the specific verb+resource criterion. It adds the prerequisite 'WRITE_ENABLED=true', which aids clarity. However, it does not explicitly differentiate this tool from sibling create tools (e.g., create_incident, create_problem), though the resource name is distinct. Score 4 because it is clear but lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only mentions a prerequisite (WRITE_ENABLED=true) but provides no guidance on when to use this tool versus alternatives, such as update_change_request or submit_change_for_approval. There is no indication of exclusions or recommendations. This leaves the agent without context for appropriate usage, resulting in a low score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ci_relationshipC
[CMDB Write] Create a relationship between two CMDB Configuration Items
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Relationship type (e.g. "Runs on::Runs") | |
| child | Yes | Child CI sys_id | |
| parent | Yes | Parent CI sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, and idempotentHint=false. The description's only added behavior signal is the '[CMDB Write]' tag, which merely restates readOnlyHint=false. It says nothing about what happens when the same relationship is created twice (relevant given idempotentHint=false), whether existing relationships are affected, or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the write tag and the core action. Nothing is bloated, though the bracketed tag is mildly redundant with the annotations and the remaining space is unused rather than efficiently spent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter create operation with full schema coverage and annotations covering the safety profile, the description is minimally sufficient to invoke the tool. It is missing duplicate-handling behavior and any indication of what is returned (no output schema exists), which an agent would want before creating relationships.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: each parameter (type, child, parent) has its own description, including the 'Runs on::Runs' format example for type. The description adds no parameter meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: creates a relationship between two CMDB Configuration Items. The '[CMDB Write]' prefix signals the domain and write nature, which helps distinguish it from the sibling list_relationships reader. It stops short of explicitly naming that sibling, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives such as list_relationships or cmdb_impact_analysis, and no prerequisites (e.g. that both CIs must already exist, or that a relationship type must be valid). An agent must infer all usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cleanup_ruleB
Create an inactive Table Cleanup Rule for a Data Management Policy. It deletes live records only after explicit activation. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| condition | Yes | ||
| age_seconds | Yes | ||
| clean_audit | No | ||
| match_field | No | Date/time field used for age calculation; defaults to sys_created_on. | |
| policy_sys_id | Yes | ||
| cascade_delete | No | ||
| clean_journals | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description explains the key behavioral safety gate: the rule is created inactive and deletes live records only after explicit activation. This meaningfully supports the destructiveHint=false annotation and clarifies the lifecycle. It does not discuss permissions, idempotency details, or the effect of optional flags such as cascade_delete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states what is created, and the second states the activation-dependent behavior. The only minor redundancy is the trailing [Write] marker, which repeats what the non-readOnly annotation already conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation with very low schema description coverage, the description covers the high-level activation lifecycle but leaves most inputs unexplained. An agent can understand the safety gate, but it lacks enough information to confidently choose values for condition, age_seconds, policy_sys_id, or the optional cleanup flags.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 7 parameters and only 14% schema description coverage, the description provides no parameter-level meaning at all. It does not explain condition syntax, age_seconds semantics, policy_sys_id usage, or the optional clean_audit, cascade_delete, clean_journals, or match_field behavior beyond the one schema-described parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: create an inactive Table Cleanup Rule for a Data Management Policy. It also clarifies that the rule targets live records and is not active until explicitly activated, which helps distinguish its intent from generic create tools. It does not name the closely related activation or archive/destroy siblings, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the workflow context: create a cleanup rule in an inactive state for a Data Management Policy, and only activate it separately. That gives useful usage context, but it does not explicitly state when to choose this over create_archive_rule, create_destroy_rule, 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.
create_client_scriptA
Create a new client script (onLoad, onChange, onSubmit, onCellEdit) (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Script name | |
| type | Yes | "onLoad" | "onChange" | "onSubmit" | "onCellEdit" | |
| table | Yes | Table this client script applies to | |
| active | No | Whether to activate the script (default: true) | |
| global | No | Run script globally (default: false) | |
| script | Yes | Client-side JavaScript. Use g_form, g_user, etc. | |
| field_name | No | Field name (required for onChange/onCellEdit) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is a write operation (readOnlyHint=false) and non-destructive. The description adds the key environmental requirement of SCRIPTING_ENABLED=true and the allowable script types, which are not present in annotations. This provides useful behavioral context beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the essential purpose and includes the prerequisite inline. Every word contributes value, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is rich, but the description omits usage context and does not mention that 'active' defaults to true, which could lead to unintentional activation. It covers the basic purpose and requirement but lacks guidance on when to choose this tool over siblings or the side effects of creation, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage with individual parameter descriptions, so the description does not need to duplicate them. The parenthetical list of script types adds some context for the 'type' parameter, but overall the description adds minimal meaning beyond the schema, earning the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('client script'), and enumerates the specific script types (onLoad, onChange, onSubmit, onCellEdit). It distinguishes this tool from siblings like create_business_rule and create_script_include by being client-script-specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the resource type, and mentions a prerequisite (SCRIPTING_ENABLED=true), but does not explicitly state when to use it versus alternatives like create_ui_policy or update_client_script. No exclusions or alternative recommendations are provided, leaving usage guidance primarily implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_compliance_controlB
Create a Compliance Control (sn_compliance_control). implementation_statement is dictionary-mandatory on this table but not enforced by the REST API (it is left blank if omitted) — pass it to describe how the control is actually implemented. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| owner | No | ||
| profile | No | sys_id of the Entity this control protects | |
| category | No | ||
| frequency | No | ||
| description | No | ||
| key_control | No | ||
| implementation_statement | No | How this control is implemented (dictionary-mandatory; left blank by the platform if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly=false and destructive=false, yet the description adds genuinely non-obvious behavior: the WRITE_ENABLED=true gate and the platform quirk that implementation_statement is dictionary-mandatory but silently blanked by the REST layer if omitted. That is exactly the context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, purpose first, then the single highest-risk pitfall, then a bolded write-gate flag. Dense and front-loaded with essentially no padding, though the banner could be moved earlier if it is the primary gate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and a low-coverage 8-parameter schema, the description covers the one dramatic trap well but leaves an agent guessing about most field semantics and about what a successful response looks like. Adequate but clearly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% and 8 parameters exist, so the description must compensate and does not. It elaborates only on implementation_statement (already described in the schema) and says nothing about owner, profile, category, frequency, key_control, or what `name` accepts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (Create a Compliance Control) and names the backing table sn_compliance_control, which lets an agent place it among the GRC write tools. It does not explicitly contrast with siblings like update_compliance_control or create_compliance_policy, though the name does most of that work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The write-flag banner signals a precondition and the 'create' verb implies when it applies, but there is no statement of when to use this rather than update_compliance_control or create_compliance_policy, nor any prerequisites beyond WRITE_ENABLED.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_compliance_policyA
Create a Compliance Policy (sn_compliance_policy). kb_knowledge_base, approval_method, and article_template are dictionary-mandatory on this table; the platform silently defaults them (to the standard policy KB / "manual" approval / the standard article template) if omitted, so omitting them will NOT fail the create — but pass them explicitly if you need a specific knowledge base, approval method, or template. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| owner | No | sys_id of the policy owner | |
| category | No | ||
| description | No | ||
| owning_group | No | sys_id of the owning group | |
| approval_method | No | e.g. "manual" (the platform default if omitted) | |
| policy_category | No | ||
| article_template | No | sys_id of the policy article template (defaults to the standard template if omitted) | |
| kb_knowledge_base | No | sys_id of the target knowledge base (defaults to the standard policy KB if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that the platform silently defaults kb_knowledge_base, approval_method and article_template rather than failing, and names the actual default values. It also surfaces the WRITE_ENABLED=true gate, which is exactly the kind of operational constraint an agent needs before attempting a write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a bracketed write-gate tag; the core action comes first, then the highest-risk gotcha (silent defaults), then the security constraint. Nothing is redundant with the schema and no sentence could be dropped without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation with no output schema, the description covers the write gate and the tricky defaulting behaviour, which are the main failure modes. It does not state what a successful create returns (e.g. the new sys_id), which would be useful for chaining into update_compliance_policy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 56% schema coverage, the description compensates by explaining the defaulting semantics of the three most error-prone optional parameters and their concrete default values. It leaves owner, owning_group, category, policy_category and description entirely to the schema, so coverage is good but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource and anchors it to the underlying table (sn_compliance_policy), so an agent can distinguish it from list_compliance_policies, get_compliance_policy and update_compliance_policy by verb alone. It stops short of routing the agent away from near-neighbours like create_compliance_control, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a conditional rule for the three dictionary-mandatory fields (omit safely vs. pass explicitly when a specific KB/approval method/template is needed) and flags the WRITE_ENABLED prerequisite. It offers no guidance on when to create versus update an existing policy, nor any prerequisite/ordering advice relative to create_compliance_control.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_csm_caseA
Create a new Customer Service case (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | Account name or sys_id | |
| contact | No | Contact name or sys_id (the person raising the case) | |
| product | No | Product or service sys_id related to the case | |
| category | No | Case category (e.g., "Product", "Billing", "Technical") | |
| priority | No | 1=Critical, 2=High, 3=Moderate, 4=Low | |
| description | No | Detailed description of the customer issue | |
| subcategory | No | Case subcategory | |
| assignment_group | No | CSM assignment group | |
| short_description | Yes | Brief summary of the customer issue |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate that this is a write operation (readOnlyHint=false), non-destructive, and non-idempotent. The description adds the permission requirement 'WRITE_ENABLED=true', which is useful but does not significantly expand on behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that conveys the purpose and a key prerequisite with no unnecessary words. It is perfectly concise and front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters and no output schema, the description is minimal. It covers the basic purpose and a permission requirement but lacks details on return values, typical usage patterns, or how it fits with other CSM tools. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all 9 parameters have descriptions in the schema. The tool description does not add any additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'Customer Service case', distinguishing it from sibling tools like get_csm_case, update_csm_case, and close_csm_case. The tool name and description align perfectly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions a prerequisite condition 'requires WRITE_ENABLED=true', which guides the agent on when to use this tool. However, it does not provide explicit guidance on when not to use it or compare it to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_dashboardA
Create a new Performance Analytics dashboard (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Dashboard name | |
| roles | No | Comma-separated roles that can view this dashboard (leave blank for all) | |
| active | No | Activate the dashboard immediately (default: true) | |
| description | No | Brief description of the dashboard |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read-only, non-destructive write operation. The description adds the key prerequisite of WRITE_ENABLED=true, which is valuable context beyond what annotations provide. This is a meaningful behavioral constraint for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous words. The verb and resource are front-loaded, and the requirement is a parenthetical addition that doesn't clutter the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create operation with comprehensive schema descriptions and annotations, this description provides the essential context: what it does and a required permission. No output schema exists, so return value details aren't expected. The description is complete for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive comments for all 4 parameters. The description doesn't add param-specific details, but with full schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new Performance Analytics dashboard', specifying the action, resource, and domain. It distinguishes itself from sibling tools like update_dashboard and list_pa_dashboards, and the parenthetical requirement adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context for use (creating dashboards) and includes a prerequisite (WRITE_ENABLED=true). However, it does not explicitly name alternatives or state when not to use it, but the context is strong enough for a create tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_data_management_policyB
Create an inactive Data Management Policy. Existing policies for the table are rejected. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| table | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the mutation profile: readOnly=false, destructive=false, idempotent=false, openWorld=true. The description adds useful context beyond that: the created policy is inactive, and policies already existing for the table are rejected. The rejection wording is somewhat ambiguous, but the added behavioral context is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences and front-loads the main action. The "[Write]" tag is redundant with annotations but does not add significant noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple mutation tool with three parameters, no output schema, and no schema descriptions. The description gives the core action and one constraint, but it omits what name/table should contain, how "inactive" affects use, and what happens on rejection, which is not enough for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the three parameters. It only indirectly references the table parameter and gives no meaning for name or description, leaving required parameters effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Create an inactive Data Management Policy." It clearly distinguishes creation from sibling listing/getting tools such as list_data_management_policies and get_data_management_policy, though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives, prerequisites, or conditions for creation. The note that existing policies for the table are rejected is a behavioral constraint rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_destroy_ruleB
Create an inactive destroy rule for archived data. retention_days must be at least one day. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | No | ||
| retention_days | Yes | ||
| destroy_related | No | ||
| archive_rule_sys_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: the created rule is inactive by default, so nothing takes effect until it is later activated, and retention_days has a hard minimum of one day. Annotations cover the write/open-world/idempotency profile, so this additional context is the valuable part. It doesn't say what happens if archive_rule_sys_id is invalid or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with the key fact (inactive) first. The retention_days sentence duplicates the schema's minimum constraint, which is minor redundancy but still useful as a quick-read guard.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and 0% parameter documentation, the description covers purpose and the inactive-by-default outcome but leaves the parameter contract and the activation follow-up largely implicit. Adequate to identify the tool, thin for calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for five parameters, so the description must carry the burden and doesn't. It only restates the retention_days minimum that the schema already enforces via minimum: 1, and leaves archive_rule_sys_id, name, description, and destroy_related entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Create an inactive destroy rule") and scopes it to archived data, which separates it from create_archive_rule and create_cleanup_rule by rule type. It never names those siblings explicitly, so the differentiation relies on the reader's knowledge of the rule taxonomy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (it requires an existing archive_rule_sys_id but doesn't say so), and no reference to set_destroy_rule_active for actually enabling the rule. The phrase "inactive" hints that activation is a separate step but the description never says so.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_devops_changeA
Create a change request linked to a DevOps deployment for change governance. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Change type: normal, standard, emergency | |
| artifact | No | Artifact name or version being deployed | |
| pipeline | No | Pipeline name or sys_id | |
| assigned_to | No | User sys_id | |
| environment | Yes | Target environment (prod, staging, dev) | |
| assignment_group | No | Group sys_id | |
| short_description | Yes | Change short description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that the created change request will be 'linked to a DevOps deployment,' which is a behavioral detail beyond the annotations. Annotations (readOnlyHint: false, idempotentHint: false, destructiveHint: false) already indicate a non-read, non-idempotent, non-destructive write operation, and the [Write] marker is consistent but redundant. The linking behavior is useful additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. The [Write] marker is redundant given the annotations, but the overall length is appropriate and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with 7 parameters, all documented in the schema, and with annotations covering safety, the description covers purpose and the linking behavior. There is no output schema, but that is typical for create operations. It is sufficient for an agent to understand when and how to use the tool, though it could briefly mention required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all 7 parameters (100% coverage), so the baseline is 3. The description does not add parameter-specific details, though the phrase 'linked to a DevOps deployment' loosely implies that parameters like pipeline/artifact are relevant to establishing that link.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Create' with a clear resource: 'a change request linked to a DevOps deployment for change governance.' This distinguishes it from the sibling tool create_change_request, which is a general change request tool, by specifying the DevOps linkage and governance purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating change requests connected to DevOps deployments but does not explicitly state when to use it instead of alternatives like create_change_request, nor does it mention when not to use it. It lacks explicit exclusions or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_epicB
Create a new epic (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | Theme sys_id (scrum_theme) | |
| product | No | Product sys_id (cmdb_model) | |
| description | No | Epic description and goals | |
| parent_epic | No | Parent epic sys_id | |
| short_description | Yes | Epic title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the agent knows this is a non-destructive write. The description adds the useful WRITE_ENABLED=true gating requirement, which is not in the structured annotations. However, it does not disclose what is returned, side effects, or whether the created epic is immediately visible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. The prerequisite is placed in parentheses, which keeps the core action prominent while still surfacing the constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with five parameters, full schema coverage, and useful annotations, the description is minimally adequate. It tells the agent what the tool does and the key environmental constraint, but it omits what happens on success (e.g., whether a sys_id or record is returned) and any side effects, which would help an agent invoke it correctly in a mutation workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (including the required short_description) are documented in the schema. The description adds no parameter-specific guidance beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new epic'), which is clear enough to distinguish it from siblings like list_epics or update_epic. It does not elaborate on what an epic is or how it fits into the scrum hierarchy, but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the prerequisite 'requires WRITE_ENABLED=true', which tells the agent about an environmental gate but not when to choose this tool over alternatives such as update_epic or create_story. There is no explicit when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_flowB
Create a new Flow Designer flow. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Flow name | |
| scope | No | Application scope | |
| description | No | Flow description | |
| trigger_type | No | Trigger type: record, schedule, inbound_email, rest (default record) | |
| trigger_table | No | Trigger table (for record triggers) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond what annotations already provide. It repeats the write nature ('[Write]') which is already indicated by readOnlyHint: false, and fails to mention important traits such as the flow being created in draft state (since publish_flow exists) or any permissions needed. With annotations covering the safety profile, the description contributes no extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence and is very concise, with no wasteful language. However, the '[Write]' tag is redundant given the annotation readOnlyHint: false, slightly reducing the efficiency of the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided and the description does not mention return values or post-creation state (e.g., whether the flow is active or draft). Given the sibling tool publish_flow, the description should clarify that create_flow likely creates an inactive flow, but it does not. This is a significant lack of context for a mutation tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all 5 parameters, so the schema fully documents each parameter. The description adds no additional semantic meaning for the parameters (e.g., how they interact or required fields beyond 'name'), so it does not compensate or enrich beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create) and the resource (Flow Designer flow), with a specific verb+resource combination. It distinguishes itself from sibling tools like update_flow, list_flows, and get_flow by explicitly targeting the creation of a new flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the goal is to create a new flow, but provides no explicit guidance on when to use this vs. alternatives like create_subflow or create_flow_action. No exclusions or alternative recommendations are given, so the context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_flow_actionA
Create a custom Flow Designer action. [Scripting]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Action name | |
| inputs | No | Input definitions [{name, type, mandatory}] | |
| script | No | Action script body | |
| outputs | No | Output definitions [{name, type}] | |
| description | No | Action description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the write nature is known. The description adds a '[Scripting]' tag, which gives a hint about the target audience, but does not disclose additional behavioral traits such as permissions, validation, or side effects. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a single sentence plus a tag. It is front-loaded and wastes no words, fitting the standard for efficient descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the schema covers parameters and annotations provide safety hints, the description lacks information about return values, prerequisites, or any special context needed for scripting. For a creation tool with multiple parameters, this is adequate but leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not add any meaning beyond the input schema, which already documents all five parameters with descriptions. Since schema description coverage is 100%, the baseline of 3 is appropriate; no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a custom Flow Designer action, using a specific verb and resource. It distinguishes from the sibling create_flow and other create tools by explicitly naming the artifact type (action).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not explain when to use this tool versus alternatives like create_flow or create_subflow, nor any prerequisites or context for creating an action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_grc_entityA
Create a GRC Entity (sn_grc_profile). profile_class must be a valid sys_id from sn_grc_profile_class (e.g. Business Unit, Vendor, Application — use list_grc_entities with no filter or query_records on sn_grc_profile_class to discover valid classes). owned_by is dictionary-mandatory but not enforced by the REST API (the Entity is created with no owner if omitted) — set it to avoid an unowned Entity. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Entity name | |
| cmdb_ci | No | sys_id of the linked CMDB CI, if any | |
| owned_by | No | sys_id of the owning user (dictionary-mandatory; recommended) | |
| framework | No | ||
| description | No | ||
| profile_class | Yes | 32-char sys_id of the Entity class (sn_grc_profile_class) | |
| functional_domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-readonly write operation, but the description adds important operational context: WRITE_ENABLED=true is required, owned_by is dictionary-mandatory yet not enforced by the REST API, and profile_class must be a valid class sys_id. These are meaningful behavioral details beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then provides only high-value constraints and warnings. The write prerequisite is clearly bracketed at the end, and there is little wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and 7 parameters, the description covers the main creation pitfalls, required discovery workflow, and write prerequisite. It could be stronger by mentioning the expected response or clarifying the remaining optional fields, but it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 57%, and the description adds substantial meaning for the critical profile_class and owned_by parameters, including valid-value discovery and the consequence of omission. It does not clarify framework, functional_domain, or description, but it materially improves the most important parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: create a GRC Entity in sn_grc_profile. This clearly distinguishes it from sibling read/update tools such as list_grc_entities, get_grc_entity, and update_grc_entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent how to discover valid profile_class values via list_grc_entities with no filter or query_records on sn_grc_profile_class. It also advises setting owned_by to avoid creating an unowned entity, though it does not explicitly discuss when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_grc_indicatorA
Create a GRC Indicator (sn_grc_indicator). item is the sys_id of an EXISTING Compliance Control (sn_compliance_control) or Risk (sn_risk_risk) record — both extend the same base table, so their own sys_id is used directly, no separate lookup needed. entity MUST be the specific Entity already associated with that item (e.g. the Control/Risk's own profile field) — confirmed live that a validation business rule rejects (HTTP 403) any entity that isn't the one the item is actually scoped to. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | sys_id of an existing sn_compliance_control or sn_risk_risk record | |
| owner | No | ||
| entity | Yes | sys_id of the Entity — must match the item's own `profile` | |
| category | No | ||
| owning_group | No | ||
| short_description | No | ||
| collection_frequency | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a write operation (readOnlyHint=false, destructiveHint=false), but the description adds real value beyond them: the live-confirmed business-rule rejection with HTTP 403 and the WRITE_ENABLED=true governance gate. That is exactly the kind of non-obvious write behavior an agent needs. Minor gap: no mention of side effects such as indicator results being generated or of what a successful response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the tool's identity, then the two parameter traps, then the write gate — a sensible ordering for an agent. Every sentence carries information; the only mild stretch is the extended explanation of why no separate lookup is needed, though that is genuinely useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-param mutation tool with no output schema and thin schema coverage, the description covers the high-risk elements: required-parameter sourcing, the entity scoping rule, the 403 failure mode, and the write-enablement gate. The remaining gap is only around optional field values and post-create behavior, which are lower risk for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29% (2 of 7 params documented), so the description must compensate — and it does well for the two required params: `item` is explained as a direct sys_id usage because both parent tables share a base table, and `entity` is tied to the item's `profile` field. However, the five optional params (owner, category, owning_group, short_description, collection_frequency) get no semantic treatment in either the schema or the description, leaving the compensation partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource pair plus the underlying table name (sn_grc_indicator), which unambiguously separates it from the sibling read/update tools list_grc_indicators, get_grc_indicator and update_grc_indicator. An agent knows exactly what record type is being created.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the prerequisites that trip up callers: `item` must be an EXISTING sn_compliance_control or sn_risk_risk record, and `entity` must be the specific entity that item is scoped to. It also warns that a validation business rule returns HTTP 403 for mismatched entities, which is actionable when-to-use guidance. It stops short of naming a sibling tool to discover the required sys_ids, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_grc_issueC
Create a GRC Issue (sn_grc_issue). [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| impact | No | ||
| profile | No | sys_id of the related Entity | |
| urgency | No | ||
| issue_type | No | ||
| description | No | ||
| classification | No | ||
| assignment_group | No | ||
| short_description | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, and non-idempotent, so the safety profile is covered. The description adds one genuinely useful behavioral fact not in the annotations — the WRITE_ENABLED=true gate — but says nothing about side effects, required permissions beyond the flag, or duplicate prevention for a non-idempotent create.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the write gate front-loaded in bold, no filler. It is efficient, though its brevity here reflects under-specification rather than disciplined economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no output schema and near-zero schema documentation, the description omits nearly everything an agent needs: field meaning, valid value ranges, whether related Entity profile is mandatory in practice, and what the created issue's identifier looks like on return.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 8 parameters and only 13% schema description coverage, the description carries the burden and provides none — it explains no field semantics at all. Terms like impact, urgency, classification, and issue_type are undocumented in both places, leaving an agent to guess at acceptable values and formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a GRC Issue') and names the underlying table (sn_grc_issue), which cleanly separates it from list_grc_issues, get_grc_issue, and update_grc_issue. It stops short of explicitly naming those siblings as alternatives, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the inline write-gate notice, which tells the agent a precondition exists but not when to choose this tool over update_grc_issue or create_risk. There are no exclusions, no mention of what a GRC issue is for, and no workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_groupA
Create a new assignment group (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Group name | |
| manager | No | Manager user_name or sys_id | |
| description | No | Group description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the mutation is expected. The description adds the critical behavioral requirement of WRITE_ENABLED=true, which is not in the annotations. This is useful context that goes beyond structured data, though it does not describe side effects or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that conveys the purpose and a key prerequisite. No wasted words; it is appropriately sized for a simple create operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, schema covers all parameters, and no output schema exists. The description provides the essential purpose and the WRITE_ENABLED constraint. It could have elaborated on expected return values, but for a straightforward create operation, the information is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear descriptions for all three parameters (name, manager, description). The description adds no additional parameter meaning beyond what is already in the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Create' with a clear resource 'assignment group', distinguishing it from related group management tools like update_group or add_user_to_group. It also adds a useful operational condition (WRITE_ENABLED=true) that clarifies the intended use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the verb 'Create' and the tool name, but there is no explicit guidance on when to use this vs. alternatives such as update_group for existing groups. The WRITE_ENABLED requirement is a prerequisite, not a usage guideline. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_hr_caseB
Create a new HR Service Delivery case (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| priority | No | 1=Critical, 2=High, 3=Moderate, 4=Low | |
| hr_service | Yes | HR service sys_id or name (e.g. "Onboarding", "Offboarding") | |
| description | No | Full details of the HR request | |
| subject_person | No | User sys_id or username the case is about | |
| assignment_group | No | HR assignment group name or sys_id | |
| short_description | Yes | Brief description of the HR request |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's a write operation (readOnlyHint=false). Description adds the WRITE_ENABLED requirement, which is useful. However, it doesn't disclose side effects like triggering workflows or notifications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no unnecessary words. The requirement is front-loaded. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no mention of return values or success/error responses. With 6 parameters and many similar sibling tools, the description should provide more context (e.g., what the response includes, example usage).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 6 parameters have descriptions in the input schema, so schema coverage is 100%. The description adds no additional meaning beyond what's already provided in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Create' and the resource 'HR Service Delivery case'. It distinguishes from sibling tools like update_hr_case or close_hr_case. The additional requirement note does not detract.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like create_hr_task or other creation tools. The WRITE_ENABLED requirement is a precondition, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_hr_taskA
Create a task within an HR case (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| due_date | No | Due date in ISO 8601 format | |
| assigned_to | No | User sys_id or username to assign the task to | |
| hr_case_sysid | Yes | sys_id of the parent HR case | |
| short_description | Yes | Brief description of the task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with annotations (readOnlyHint=false) and adds a permission requirement (WRITE_ENABLED=true), but does not elaborate on side effects, return values, or other behavioral traits. Since annotations already indicate a write operation, the added value is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that conveys the action and a key prerequisite with no filler or redundant information. It is front-loaded with the verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create operation with fully described parameters and safety annotations, the description is adequate. It could mention that the task is created as a child record of the HR case, but this is implied by 'within an HR case.' The absence of an output schema reduces the need for return-value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 4 parameters, so the description does not need to add parameter details. It provides the baseline level of clarity without adding extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('a task within an HR case'), which is specific and distinguishes it from sibling tools like create_hr_case (creates a case) and list_hr_tasks (lists tasks). The scope is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context (creating tasks inside HR cases) and a prerequisite (WRITE_ENABLED=true), which implies when it can be used. However, it does not explicitly mention when not to use it or name alternative tools, so it falls short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_import_set_rowA
Insert a row into an Import Set staging table (a table extending sys_import_set_row) for later transformation (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Key-value pairs for the staging table row | |
| staging_table | Yes | Staging table name (e.g. "u_import_incident"). Must already exist and extend sys_import_set_row. | |
| import_set_sys_id | Yes | sys_id of the Import Set that owns this staging table |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-idempotent, open-world behavior; the description adds a genuinely useful behavioral prerequisite (WRITE_ENABLED=true) and the constraint that the staging table must already exist and extend sys_import_set_row. It does not describe what happens on failure or duplicate inserts, which is a minor gap for a non-idempotent write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the action front-loaded, followed by the table-type detail and the prerequisite. No wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter write tool with no output schema, the description covers purpose, target table constraint, and the write-enablement prerequisite, which is enough to invoke it correctly. It could note that no sys_id or result is returned, but the essential call-time context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented in the schema, including the nested 'data' object and the staging_table example. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Insert a row into an Import Set staging table') plus the table family (sys_import_set_row) and the downstream purpose (later transformation). An agent can distinguish it from list/get import set tools, though it doesn't explicitly name the closest sibling (import_excel_to_import_set) as an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite '(requires WRITE_ENABLED=true)' gives a useful gating condition, but there is no explicit guidance on when to choose this tool over siblings like import_excel_to_import_set or import_cmdb_data, nor on 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.
create_incidentA
Create a new incident record (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| impact | No | 1=High (enterprise-wide), 2=Medium (department), 3=Low (individual) | |
| urgency | No | 1=High, 2=Medium, 3=Low | |
| category | No | Incident category | |
| priority | No | 1=Critical, 2=High, 3=Moderate, 4=Low | |
| caller_id | No | Caller user name or sys_id | |
| description | No | Detailed description | |
| subcategory | No | Incident subcategory | |
| assignment_group | No | Assignment group name or sys_id | |
| short_description | Yes | Brief description of the issue |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive. The description adds the prerequisite condition (WRITE_ENABLED=true), which is valuable context beyond annotations. However, it does not disclose what the tool returns (e.g., created record sys_id) or mention side effects like notifications, leaving behavioral transparency adequate but not excellent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a parenthetical condition, containing zero unnecessary words. It is well front-loaded with the verb and resource, making it exceptionally concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters and no output schema, the description is minimal. It covers the core purpose and a key prerequisite, but does not explain return values or typical usage flow. Given the complexity, a bit more context (e.g., 'Returns the sys_id of the created incident') would improve completeness, but it is not severely lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 9 parameters with descriptions, achieving 100% coverage. The description does not add any parameter-specific details beyond the schema, so it does not compensate further. Baseline 3 is appropriate given schema richness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'incident record', making the purpose unmistakable. It also mentions the prerequisite condition ('requires WRITE_ENABLED=true'), which further clarifies the tool's use. Given the sibling tools (update_incident, close_incident, etc.), it effectively distinguishes itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides one key prerequisite ('WRITE_ENABLED=true'), which is helpful but does not offer broader guidance on when to use this tool versus alternatives like update_incident or resolve_incident. No comparison to siblings or exclusions are provided, so the agent must infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_knowledge_articleB
Create a new knowledge article (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Article body (HTML or plain text) | |
| category | No | Article category | |
| short_description | Yes | Article title | |
| knowledge_base_sys_id | Yes | sys_id of the target knowledge base |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the 'requires WRITE_ENABLED=true' requirement, which is not present in annotations. However, it does not disclose other behavioral traits such as return values, error conditions, or side effects. Annotations already cover readOnly and destructive hints, so the additional context is limited but nonzero.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It states the core action and a key prerequisite efficiently, making every word valuable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too sparse for a create operation. It does not mention what the response contains (e.g., sys_id of the created article) or any potential side effects. Since there is no output schema, the description carries the burden of explaining return behavior, which it fails to do. The schema covers parameters, but the overall context remains incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all 4 parameters (100% coverage), so the description does not need to add parameter details. It adds no additional meaning beyond what the schema provides, yielding the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new knowledge article') and the resource. It does not explicitly differentiate from sibling tools like update_knowledge_article or publish_knowledge_article, but the verb 'create' is unambiguous and distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The parenthetical 'requires WRITE_ENABLED=true' is a precondition, not a usage scenario, and there is no mention of using update for existing articles or publish for lifecycle transitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_kpiC
[Write] Create a Key Performance Indicator from ServiceNow data
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | KPI name | |
| unit | No | Display unit | |
| field | No | Aggregate field | |
| table | Yes | Source table | |
| aggregate | Yes | Aggregate function: COUNT/AVG/SUM/MIN/MAX | |
| conditions | No | Encoded query filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=false and destructiveHint=false, so the agent knows this is a non-destructive write operation. The description's '[Write]' tag merely duplicates that annotation without adding further behavioral context such as side effects, required permissions, or what happens to existing data. It adds no new information beyond the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. The '[Write]' tag is arguably redundant, but the structure is efficient. It could have packed more useful information in the same space, so it doesn't earn a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with six parameters and no output schema, this description is woefully incomplete. It does not explain what the tool returns (e.g., the created KPI object or an ID), any special behavior, or how it fits with sibling tools like create_pa_indicator. Given the tool's complexity, the description provides insufficient context for an agent to invoke it correctly with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so all six parameters (name, unit, field, table, aggregate, conditions) have descriptions. The description does not elaborate on parameter semantics, but the schema already carries that burden, making a baseline score of 3 appropriate. No additional insight is provided in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Create) and resource (Key Performance Indicator), with an additional scoping phrase 'from ServiceNow data' that adds context beyond the tool name. However, it does not distinguish itself from sibling tool 'create_pa_indicator', which likely overlaps in purpose, so it misses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, when to prefer create_kpi over create_pa_indicator, or any other contextual usage direction. The description leaves the agent to infer usage solely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mobile_app_configA
Create a name-only sys_sg_mobile_application metadata record. Does not provision an installable mobile app, branding, navigation or screens. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the '[Write]' tag merely repeats structured data. The description does add value by clarifying the record is metadata-only and provisions nothing, but it omits how duplicate names are handled (idempotentHint=false), whether extra permissions are required, and what happens on name collisions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the scope limitation is stated immediately after the action. The trailing '[Write]' marker is redundant given readOnlyHint=false and is the only wasted token.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small one-parameter create tool this covers the essentials, but with no output schema the description never indicates what a successful call returns (sys_id, record body) and says nothing about duplicate handling or prerequisites, which an agent needs to chain the created record into follow-up calls like update_mobile_app_config.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 0% schema description coverage, so the description must compensate — and 'name-only' does confirm that name is the sole settable field, matching additionalProperties=false. It adds little else: nothing about name format, uniqueness constraints, or length expectations beyond the schema's minLength=1.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (create a name-only sys_sg_mobile_application metadata record) and explicitly bounds scope with what it does NOT do (no installable app, branding, navigation, screens). That boundary cleanly separates it from create_mobile_applet and create_mobile_layout in a crowded mobile sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The negative scoping ('does not provision an installable mobile app, branding, navigation or screens') tells an agent when this tool is the wrong choice, which is strong guidance. It stops short of naming the alternative sibling (e.g., create_mobile_applet/create_mobile_layout) that an agent should pick instead when those artifacts are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mobile_appletB
Create base sys_sg_screen metadata only. Does not configure a screen subtype, data item, navigation or app association. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readOnly, non-idempotent, non-destructive write operation. The description adds useful scope information beyond annotations by stating it creates only base metadata and explicitly excludes subtype/data item/navigation/app association setup. It still omits duplicate-name behavior, permissions, and side effects beyond what the annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loads the main action and scope. The trailing '**[Write]**' is redundant with the write annotation but not harmful; the exclusion sentence earns its place by clarifying limited scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter create tool with annotations and no output schema, the description adequately communicates the narrow creation scope and exclusions. However, it leaves parameter semantics and practical usage guidance under-specified, creating notable gaps for an agent deciding how to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters, and the description provides no meaning for 'name' or 'description'. It does not compensate for the missing schema documentation, leaving the required 'name' parameter and optional 'description' semantically undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create base sys_sg_screen metadata only.' It also clarifies scope by listing what the tool does not configure (subtype, data item, navigation, app association), which helps distinguish it from broader mobile configuration tools. However, it relies on the internal table name 'sys_sg_screen' rather than explicitly naming 'mobile applet' or a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: create base metadata when you do not need subtype, data item, navigation, or app association configuration. The description does not explicitly say when to choose this tool over siblings such as create_mobile_app_config or create_mobile_layout, nor does it state prerequisites or ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mobile_layoutB
Link an existing screen to an existing UI element. Creates only an M2M mapping, not a full layout or screen. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| screen_sys_id | Yes | ||
| ui_element_sys_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-destructive, non-idempotent write. The description adds real value by bounding the write ('creates only an M2M mapping, not a full layout or screen'), telling the agent this is a narrow association rather than a structural creation. The '**[Write]**' tag merely restates readOnlyHint=false, and nothing is said about duplicate-link behavior or the resulting record.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight, front-loaded sentences that lead with the action and then the scope caveat. The trailing '**[Write]**' marker is redundant given the annotations and is the only wasted element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter write with annotations present and no output schema, the essentials are covered: what it links, that inputs must pre-exist, and that it is a mapping only. Missing are the identifier format and what happens on a duplicate mapping, which matter for a non-idempotent create.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load. It conveys that both parameters are references to pre-existing objects (a screen and a UI element), which is meaningful semantics, but it never names the parameters or specifies the sys_id identifier format expected by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb and both resources ('Link an existing screen to an existing UI element') and immediately clarifies the scope boundary versus its misleading name: it creates only an M2M mapping, not a full layout or screen. It stops short of naming the sibling (list_mobile_layouts) that would cover the full-layout case, so differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Existing' signals the prerequisite that both the screen and the UI element must already exist, which implies when the tool applies. However, there is no explicit when-to-use/when-not-to-use routing against siblings such as create_mobile_applet or list_mobile_layouts, leaving the agent to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_notificationA
Create a new email notification definition (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Notification name | |
| event | No | Event name that fires this notification (e.g. "incident.commented") | |
| table | Yes | Table that triggers this notification (e.g. "incident") | |
| active | No | Whether to activate immediately (default true) | |
| subject | No | Email subject line (supports ${field} variables) | |
| condition | No | Additional filter condition script | |
| recipients | No | Who receives the email (e.g. "assigned_to", "watch_list") | |
| message_html | No | HTML body of the email notification |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that this is a write operation (readOnly=false) and non-idempotent. The description adds the WRITE_ENABLED=true requirement, which is a useful operational constraint not fully captured by annotations. However, it does not disclose potential side effects, validation behavior, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that communicates the action and a key prerequisite without any redundant wording. It earns its place and is immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich 100% schema coverage and annotations (readOnly=false, idempotent=false), the description provides the essential extra context (WRITE_ENABLED=true). It does not describe return values, but no output schema exists and this is a common create operation, making the description adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for all 8 parameters (100% coverage), so the description does not need to add parameter-level semantics. The description itself adds no parameter context beyond the tool's purpose, which is acceptable given the schema completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action and resource: 'Create a new email notification definition'. This clearly identifies the verb (create) and the object (email notification definition), distinguishing it from siblings like update_notification and list_notifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool to create a new email notification. It also includes a prerequisite (WRITE_ENABLED=true) that sets a usage condition. While it does not explicitly mention alternatives or exclusions, the context is unambiguous for a create operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_offboarding_caseB
Create an employee offboarding case with exit tasks. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Offboarding reason (resignation, termination, retirement) | |
| manager | No | Manager user sys_id | |
| last_day | Yes | Last working day (ISO 8601) | |
| employee_sys_id | Yes | Departing employee user sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds '[Write]' but that's redundant with readOnlyHint=false in annotations. It does not disclose any side effects, permissions, or what 'exit tasks' entail. Beyond the basic action, there is no behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, directly states action, no filler. The '[Write]' tag is a useful quick cue. Ideal length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description doesn't indicate what the response will be (e.g., created case sys_id). It also lacks context about employee validation, offboarding process steps, or prerequisites. Given the tool's complexity (4 params) and having a close sibling (create_onboarding_case), additional context would be necessary for an agent to confidently invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema describes all 4 parameters (reason, manager, last_day, employee_sys_id) with clear meanings. The tool-level description adds no additional semantics, so according to baseline (100% coverage) score is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses 'Create an employee offboarding case with exit tasks' – a specific verb (create), a clear resource (offboarding case), and a distinctive scope (exit tasks). This distinguishes it from sibling tools like create_onboarding_case, which deals with arrivals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance about when to use this tool over alternatives like create_onboarding_case or create_hr_case. The description only implies usage via the name and action; there are no exclusions, prerequisites, or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_onboarding_caseA
Create an employee onboarding case with all standard tasks. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| manager | No | Manager user sys_id | |
| location | No | Office location | |
| job_title | No | Job title | |
| department | No | Department name or sys_id | |
| start_date | Yes | Start date (ISO 8601) | |
| employee_sys_id | Yes | New employee user sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive or idempotent. The description adds the key behavioral detail that it creates a case 'with all standard tasks', which goes beyond annotations. However, it does not disclose potential side effects, such as notifications or auto-assignments, even though openWorldHint=true suggests possible external effects. The annotations lower the bar, and the description provides some added context, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that clearly conveys the tool's purpose. It includes the unnecessary '[Write]' tag, but that is minor. It is concise, front-loaded, and free of fluff, earning a maximum score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple intent and all parameters are documented in the schema, but there is no output schema or mention of return values. The description does not clarify what happens after creation (e.g., whether a case ID is returned or if any prerequisites like employee existence are checked). Given the 100% schema coverage and existing annotations, the description is adequate but leaves some gaps in operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for all six parameters, so the baseline is 3. The description does not add any parameter-specific information, merely referring to the overall action. Since the schema already documents each parameter adequately, the description's contribution is minimal but not missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: creating an employee onboarding case, and specifies that it includes all standard tasks. This distinguishes it from sibling tools like create_offboarding_case and create_hr_case, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (when onboarding an employee), but it does not explicitly mention alternatives or exclusions. It is clear enough for the agent to infer appropriate use, but lacks the explicit 'use this instead of X' guidance that would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_portalA
Create a new Service Portal configuration (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| logo | No | sys_id of the logo attachment record | |
| theme | No | sys_id of the sp_theme to apply | |
| title | Yes | Human-readable portal title | |
| url_suffix | Yes | URL path segment for the portal (e.g. "myportal" → /myportal) | |
| description | No | Short description of the portal | |
| default_homepage | No | sys_id of the default homepage sp_page record |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and not idempotent. The description adds the critical prerequisite 'requires WRITE_ENABLED=true', which is beyond the structured annotations. It does not detail what happens on success or failure, but the key behavior—creating a new configuration—is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that states the tool's purpose and a key prerequisite. No filler or redundant content. The most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward create operation with a fully self-describing schema and clear annotations, this description is adequately complete. It covers the action, the resource, and a required precondition. It does not mention return values, but no output schema is provided, and typical create behavior is implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, with each parameter already described (e.g., 'sys_id of the logo attachment record', 'URL path segment for the portal'). The description adds no additional parameter-level information, so the schema carries the full burden, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new Service Portal configuration', which specifies a concrete action (create) on a specific resource (Service Portal configuration). This distinguishes it from sibling tools like create_portal_page, which creates a page within a portal, and list_portals, which retrieves existing portals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context for when to use this tool: when a new Service Portal configuration needs to be created. It also adds a prerequisite ('requires WRITE_ENABLED=true'), which is useful guidance. However, it does not explicitly mention alternatives or when not to use it, so it stops 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.
create_portal_pageA
Create a new page inside a Service Portal (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique page ID used in the URL (e.g. "my-page") | |
| title | Yes | Page title | |
| description | No | Brief description of the page purpose | |
| portal_sys_id | Yes | sys_id of the parent Service Portal |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive operation. The description adds the permission requirement (WRITE_ENABLED=true), which is useful context. However, it does not elaborate on side effects, the openWorldHint behavior, or what happens if the requirement is not met.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys both the action and a necessary condition. There is no fluff or redundant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is minimal but sufficient for a basic create operation. It lacks information about return values or post-conditions, and the openWorldHint annotation remains unexplained, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (id, title, description, portal_sys_id) adequately described in the schema. The description adds no additional parameter semantics, so it stays at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('a new page inside a Service Portal'), which distinguishes it from sibling tools like create_portal_widget and create_portal. It specifies 'new page' to disambiguate from updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite ('requires WRITE_ENABLED=true'), indicating when the tool is usable. However, it does not explicitly mention alternatives or exclusions (e.g., 'use create_portal_widget for widgets'), leaving some guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_portal_widgetA
Create a new Service Portal widget with template, CSS, and scripts (requires WRITE_ENABLED=true and SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique widget ID/handle (e.g. "my-custom-widget") | |
| css | No | SCSS/CSS styles | |
| name | Yes | Human-readable widget name | |
| template | No | Angular HTML template | |
| demo_data | No | JSON object with demo data for preview | |
| client_script | No | Client-side controller JavaScript | |
| option_schema | No | JSON array defining widget options | |
| server_script | No | Server-side script (GlideRecord calls) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, open-world mutation. The description adds valuable environment-gating context: WRITE_ENABLED and SCRIPTING_ENABLED must be true. It does not contradict annotations, though it could say more about duplicate-ID behavior or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that covers the action, resource, included artifact types, and prerequisite flags. There is no filler text and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create-mutation tool with full schema coverage and clear annotations, the description covers purpose and prerequisites well. It omits what the tool returns (e.g. created widget ID or record) and edge-case behavior like duplicate ID handling, which are the main remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 8 parameters are already documented in the schema. The description only summarizes template, CSS, and scripts and does not add syntax, format, or interaction details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and resource ('Service Portal widget') plus the included artifact types (template, CSS, scripts). The word 'new' cleanly distinguishes it from sibling tools like update_portal_widget, get_portal_widget, and list_portal_widgets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an important operational prerequisite ('requires WRITE_ENABLED=true and SCRIPTING_ENABLED=true'), but it does not explicitly compare when to use this vs. update_portal_widget or list_portal_widgets. Usage is implied by 'Create a new' rather than spelled out with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_problemB
Create a new problem record (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| priority | No | 1=Critical, 2=High, 3=Moderate, 4=Low | |
| description | No | Detailed description | |
| assignment_group | No | Assignment group name or sys_id | |
| short_description | Yes | Brief description of the problem |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds the WRITE_ENABLED requirement but fails to disclose side effects (e.g., triggers, notifications), error conditions, or what happens upon successful creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. However, the parenthetical note could be integrated more smoothly. Very concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, 1 required, and no output schema, the description should clarify return value (e.g., sys_id) or success behavior. It lacks completeness for an agent to fully understand the tool's contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all 4 parameters have descriptions). The tool description adds no additional meaning beyond what the schema provides. It does not explain interdependencies or how to determine the assignment_group sys_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'create' and resource 'problem record', and includes a prerequisite (WRITE_ENABLED=true). Among many create_ siblings, it is specific to problems, distinguishing it from tools like create_incident or create_change_request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., update_problem, resolve_problem). The only hint is the WRITE_ENABLED precondition, but no context on permissions, typical workflow, or when creation is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_remediation_taskB
Create a Remediation Task (sn_vul_remediation_task). [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | State filter. Single value or comma-separated list. 1=Open, 2=Under Investigation, 10=Awaiting Implementation, 11=In Review, 12=Deferred, 101=Resolved, 3=Closed | |
| cmdb_ci | No | Affected CI sys_id | |
| assigned_to | No | Assignee sys_id | |
| description | No | Detailed description | |
| sn_vul_entry | No | Related vulnerability entry sys_id | |
| ttr_target_date | No | Target remediation date (YYYY-MM-DD HH:MM:SS) | |
| assignment_group | No | Assignment group sys_id | |
| short_description | Yes | Short description / title of the task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false. The description adds one genuinely useful operator fact beyond that: creation is gated behind WRITE_ENABLED=true. It does not say what happens on duplicate short_description, which fields are required in practice, or how the new task relates to findings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses with the resource and the write-gate constraint front-loaded; nothing is redundant. It is, if anything, under-specified rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-record mutation with a rich 8-parameter schema and no output schema, the definition covers identity and the write precondition but omits return value (sys_id?), whether reopening/validation applies, and the typical follow-up attachment to vulnerability entries, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 8 parameters including the state enum values are fully documented in the schema. The description adds no parameter-level meaning beyond it, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Create a Remediation Task') and pins the underlying table (sn_vul_remediation_task). It does not differentiate from near-siblings such as add_vi_to_remediation_task or create_vulnerable_item, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus other creation tools, no prerequisites beyond the write flag, and no note that a vulnerability entry (sn_vul_entry) is typically attached afterwards via add_vi_to_remediation_task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_reportA
Create a new saved report on any table (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Report type: "bar", "column", "pie", "line", "list", "gauge", "single_score", "trend", "pivot", "calHeatmap" | |
| field | No | Primary grouping field for the report | |
| query | No | Encoded query to filter report data | |
| roles | No | Comma-separated roles that can view the report | |
| table | Yes | Table to report on (e.g. "incident", "change_request") | |
| title | Yes | Report title displayed in the list | |
| group_by | No | Secondary grouping field (stacked charts) | |
| aggregate | No | Aggregate function: COUNT (default), SUM, AVG, MIN, MAX |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false), so no contradiction exists. The description adds useful context about the required WRITE_ENABLED setting and that the report is saved, but it does not disclose what the tool returns or whether duplicate titles cause errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with the key action and prerequisite front-loaded. Every word adds value, and there is no unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the input schema is rich and fully describes parameters. The description does not mention return values or validation behavior, and given the moderate complexity (8 params, 3 required), this is a slight gap. It is minimally viable but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all 8 parameters. The description adds little parameter meaning beyond the phrase "any table," which maps to the 'table' parameter, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Create a new saved report on any table." It distinguishes this from sibling tools like update_report, list_reports, and generate_report by emphasizing "saved" and "any table," making the creation scope clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly say when to use this tool versus alternatives such as generate_report for ad-hoc reports or run_aggregate_query for data exploration. The only guidance is the prerequisite "requires WRITE_ENABLED=true," which is a condition, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_rest_messageA
Create a new outbound REST Message definition (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Unique REST Message name | |
| endpoint | Yes | Base URL endpoint (e.g. "https://api.example.com/v1") | |
| description | No | Purpose/description of this integration | |
| use_mutual_auth | No | Whether to use mutual TLS authentication | |
| authentication_type | No | Auth type: "no_authentication", "basic", "oauth2" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the write nature is known. The description adds the 'WRITE_ENABLED=true' prerequisite, which is a useful behavioral constraint. However, it does not mention other side effects or return behavior, though annotations cover the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and includes a key constraint in parentheses. Every word earns its place, with no redundant or vague language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with well-documented schema and annotations, the description adequately conveys purpose and a critical prerequisite. It does not explain return values, but no output schema exists, and the tool's behavior is straightforward. The openWorldHint annotation provides additional context about extensibility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all 5 parameters, so the schema fully documents their meaning. The description adds no parameter-specific guidance, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Create' and a specific resource 'outbound REST Message definition', clearly distinguishing it from sibling tools like list_rest_messages and get_rest_message. The term 'outbound' adds directional context, and 'definition' clarifies it creates a template, not a message instance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a prerequisite: 'requires WRITE_ENABLED=true', which is important guidance for the agent before invoking. It does not name alternatives, but given the sibling tool list, the create operation is clearly distinct from list/get functions, and no plausible alternative for creating a REST message exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_riskA
Create a Risk (sn_risk_risk). NOTE: impact/likelihood/score are NOT settable here — confirmed live that a business rule always overwrites them regardless of client input (see list_risk_criteria to inspect the scale; scoring appears to require the platform's risk assessment workflow, not direct field writes). [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | sys_id of the related Entity (sn_grc_profile); also drives the auto-synced `owner` | |
| category | No | ||
| statement | Yes | sys_id of the Risk Statement (sn_risk_definition) | |
| owning_group | No | sys_id of the owning group |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that a business rule always overwrites impact/likelihood/score regardless of client input — a behavior an agent could not infer from readOnlyHint=false or destructiveHint=false. It also surfaces the WRITE_ENABLED=true gate, which is exactly the kind of operational context the structured fields lack.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the tool creates, then the critical caveat, then the write gate in a single compact block. Every clause earns its place; nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, it covers the write gate, the surprising business-rule side effect, and the alternative for scoring. It doesn't say what the call returns (e.g. the new sys_id) or what defaults apply to optional fields like category, which would help an agent chain follow-up calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema already documents profile (including the auto-synced owner), statement (sys_id of sn_risk_definition) and owning_group. The description adds meaning only by naming fields that are NOT parameters, leaving all four actual parameters untouched — an appropriate baseline but no lift.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus the underlying table ('Create a Risk (sn_risk_risk)'), which unambiguously separates it from list_risks, get_risk and update_risk in the sibling set. An agent knows exactly what object is being created.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It redirects the agent away from direct field writes for scoring and names list_risk_criteria as the inspection path, plus implies the risk assessment workflow is the sanctioned route. It stops short of explicitly saying 'use update_risk to modify an existing risk' or listing prerequisites beyond the WRITE_ENABLED flag.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_scheduled_jobA
Create a new scheduled script execution job (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Job name | |
| active | No | Whether to activate immediately (default: true) | |
| script | Yes | Server-side JavaScript to run on schedule | |
| run_time | No | Time to run (HH:MM:SS format for daily/weekly/monthly) | |
| run_type | Yes | Schedule type: "daily", "weekly", "monthly", "once", "periodically" | |
| run_period | No | Period interval for "periodically" type (e.g. "00:15:00" for 15 minutes) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate this is a write operation (readOnlyHint=false, idempotentHint=false). The description adds the specific WRITE_ENABLED=true prerequisite, which is useful permission context. It does not disclose further side effects like script execution behavior, but given the annotations, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that states the action and a key requirement. It is front-loaded and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with 6 parameters and no output schema, but the description plus schema cover the primary purpose and requirements. It could mention the return value (e.g., the created job ID), but for a mutation tool with good parameter documentation, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for all 6 parameters, so the schema carries the heavy lifting. The description's phrase 'scheduled script execution job' adds a bit of context about the script parameter's purpose but does not provide additional formatting or semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Create' and identifies the resource as 'a new scheduled script execution job', clearly distinguishing it from sibling tools that list, get, update, or trigger scheduled jobs. It also includes a prerequisite requirement, adding to its clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the requirement WRITE_ENABLED=true, which guides when the tool is usable. However, it does not explicitly name alternatives or describe when not to use it, though the sibling tool names imply related operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_scheduled_reportB
[Write] Schedule a report for recurring email delivery
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Export format: pdf/csv/xlsx | |
| frequency | Yes | Frequency: daily/weekly/monthly | |
| report_id | Yes | Report sys_id | |
| recipients | Yes | Email addresses | |
| day_of_week | No | Day of week (for weekly frequency) | |
| day_of_month | No | Day of month (for monthly frequency) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write/non-destructive behavior, and the description adds only "[Write]" and "recurring email delivery," which are largely inferable from the tool name and annotations. It does not disclose side effects such as non-idempotency implications, frequency validation, or whether an email is sent immediately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with a useful [Write] marker and no redundant wording. Every word contributes to the core purpose, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This tool has 6 parameters and no output schema, yet the description provides only a high-level action. It lacks important context such as conditional parameter requirements (e.g., day_of_week for weekly frequency), expected return values, or behavior when required fields are missing. The description is too sparse for a scheduling operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema fully documents each parameter's name and description. The description adds no additional parameter semantics beyond the general purpose, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description "Schedule a report for recurring email delivery" clearly specifies the verb (schedule), the resource (report), and the delivery mode (recurring email), which differentiates it from generic scheduled job tools. It provides a specific and unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus siblings like schedule_notification, create_scheduled_job, or generate_report. It does not mention prerequisites, alternative tools, or exclusions, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_scoped_appA
Create a new scoped application in App Studio (requires WRITE_ENABLED=true). The scope prefix must be unique and follow the pattern x__.
| Name | Required | Description | Default |
|---|---|---|---|
| logo | No | App logo attachment sys_id (optional) | |
| name | Yes | Human-readable application name | |
| scope | Yes | Unique scope prefix, e.g. "x_myco_myapp". Must start with "x_". | |
| active | No | Activate the app immediately (default: true) | |
| vendor | No | Vendor or author name | |
| version | No | Application version string (e.g. "1.0.0"). Defaults to "1.0.0". | |
| description | No | Full description of the application | |
| short_description | No | Short description shown in the app list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false) and non-destructive behavior. The description adds the WRITE_ENABLED precondition and the scope uniqueness requirement, which are not in annotations. It doesn't disclose return values or side effects, but it adds operational context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the verb and resource. Every sentence provides necessary information: the action and the critical prerequisites/constraints. No redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter create tool with no output schema, the description covers the most critical operational constraints (WRITE_ENABLED, scope uniqueness) and the full schema provides parameter details. It does not mention return values or post-creation behavior, but the annotations and schema fill most gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 8 parameters, so the baseline is 3. The description adds a slightly more specific naming pattern for scope (x_<vendor>_<appname>) but otherwise relies on the schema to convey parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('scoped application in App Studio'), using a specific verb-noun pair. It distinguishes from sibling tools like list_scoped_apps and update_scoped_app by focusing on creation and adding the scope prefix pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear prerequisite (WRITE_ENABLED=true) and a naming constraint (scope must be unique and follow x_<vendor>_<appname>), which are conditions for use. It does not explicitly name alternatives or when-not-to-use, but the domain is clear enough for an agent to choose this over list/get/update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_script_includeA
Create a new script include (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Script include name | |
| access | No | "public" or "package_private" (default: "public") | |
| active | No | Whether to activate (default: true) | |
| script | Yes | Script body (class definition). ServiceNow supports ES2021. | |
| api_name | No | API name used to call this from other scripts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutable (readOnlyHint=false) and not destructive; description adds the requirement for SCRIPTING_ENABLED=true, which is beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action and a key condition. Every word is useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and full schema parameter descriptions, the description is complete enough. Missing details like the expected script format are covered by the schema's 'class definition' hint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description does not add additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create a new script include' with a verb and resource. However, it does not distinguish from sibling tools like update_script_include or other create_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions a prerequisite (SCRIPTING_ENABLED=true) which provides some usage context. But lacks guidance on when to use this vs alternatives (e.g., create_business_rule).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_scrum_taskA
Create a scrum task (sub-task of a story) (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| assigned_to | No | Assignee user_name or sys_id | |
| story_sys_id | No | Parent story sys_id | |
| short_description | Yes | Task title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-read-only, non-idempotent, non-destructive operation, so the baseline is lower. The description adds the WRITE_ENABLED=true prerequisite, which is useful environmental context, but it does not disclose return behavior, side effects beyond creation, or what happens without required fields. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, tightly packed with essential information: action, resource, parent relationship, and a key prerequisite. Every word earns its place, with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (3 params, no output schema, annotations present), the description is mostly adequate but leaves some gaps. It does not clarify why story_sys_id is optional despite calling the task a sub-task of a story, nor does it mention what the tool returns or how the WRITE_ENABLED flag affects execution. A bit more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all three parameters. The description adds no additional parameter meaning beyond what the schema provides, but it does not need to; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the specific resource ('scrum task') with a clarifying parenthetical that it is a sub-task of a story. This distinguishes it from siblings like create_story and update_scrum_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through its clear create intent but does not explicitly state when to use it versus alternatives (e.g., update_scrum_task for modifications) or when not to use it. The WRITE_ENABLED prerequisite is a useful condition but does not substitute for explicit usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_security_incidentA
Create a Security Operations incident (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Incident category (e.g., "Malware", "Phishing", "Data Breach", "Unauthorized Access") | |
| severity | No | 1=High, 2=Medium, 3=Low | |
| description | No | Detailed description of the security incident | |
| subcategory | No | Incident subcategory | |
| affected_cis | No | List of affected CI sys_ids | |
| assignment_group | No | SOC team or assignment group | |
| short_description | Yes | Brief description of the security event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only behavior (readOnlyHint=false). The description adds the WRITE_ENABLED requirement, which is useful but minimal. No mention of side effects or output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with the core purpose front-loaded. It could be more structured but is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and description does not state what the tool returns (e.g., sys_id). For a creation tool, this is a significant gap. Annotations do not compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description provides example categories but no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'Security Operations incident', distinguishing it from siblings like create_incident. It also specifies a prerequisite (WRITE_ENABLED=true).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite condition, but does not explicitly state when to avoid using this tool or mention alternatives. It provides clear context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_soap_messageA
Create a new outbound SOAP Message definition in sys_soap_message (requires WRITE_ENABLED=true). The endpoint URL is set per function via create_soap_message_function.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Unique SOAP Message name | |
| wsdl | No | WSDL URL for the service (used for schema introspection) | |
| description | No | Purpose/description of this integration | |
| authentication_type | No | Auth type: "no_authentication" (default), "basic", "mutual_authentication" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the mutation profile is known. The description adds meaningful operational context: the WRITE_ENABLED=true gate and the fact that endpoint URLs are not configured here, which the agent could not infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and table, followed by the gating requirement and the sibling boundary. No padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create mutation with no output schema and fully documented parameters, the description covers the important facts: target table, write gate, and where endpoint configuration lives. It could mention whether name must be unique at creation time or what is returned, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each of the four parameters documented (including auth type values), so the schema does the heavy lifting. The description adds only the wsdl/endpoint-related nuance, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new outbound SOAP Message definition') and names the target table sys_soap_message, which cleanly distinguishes it from create_soap_message_function and create_rest_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition (requires WRITE_ENABLED=true) and clarifies the division of labor with create_soap_message_function for endpoint URLs. It stops short of naming alternatives for listing/inspecting existing messages, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_soap_message_functionA
Add a SOAP function (operation) to an existing SOAP Message in sys_soap_message_function (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| envelope | No | SOAP XML request envelope template with ${variable} placeholders | |
| soap_action | No | Full SOAP Action header value | |
| function_name | Yes | WSDL operation name (matches the SOAP operation; used in scripts to call it) | |
| soap_endpoint | No | SOAP service endpoint URL for this operation | |
| soap_message_sys_id | Yes | Parent SOAP Message sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, and idempotentHint=false, so the mutation profile is covered. The description adds the WRITE_ENABLED=true flag requirement, which is real operational value, but says nothing about duplicate function names, whether an existing function is overwritten, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and resource, then appends the table and the precondition in a tight parenthetical. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema coverage and annotations carrying the safety/idempotency profile, the description covers purpose and the write gate adequately. Minor gaps remain around the parent-child requirement and the absence of an output schema leaves return behavior unexplained, but nothing essential to invoking it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so envelope, soap_action, function_name, soap_endpoint, and soap_message_sys_id are all documented in the schema. The description adds no semantics beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Add'), resource ('SOAP function (operation)'), and parent ('an existing SOAP Message'), plus the target table sys_soap_message_function. It implicitly distinguishes itself from create_soap_message and list_soap_message_functions, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'requires WRITE_ENABLED=true' precondition is a useful gate that tells the agent when the call will fail. However, there is no guidance on choosing this tool over create_soap_message or list_soap_message_functions, and no note on whether the parent message must be created first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_solution_packageB
Create a solution package from selected update sets for distribution. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Package name | |
| description | No | ||
| update_sets | Yes | Array of update set sys_ids to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a write operation (readOnlyHint false). The description adds no behavioral insights beyond restating the purpose; it does not disclose side effects on the included update sets, required permissions, or result of the operation. It provides almost no value over the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the core purpose efficiently. The embedded '[Write]' tag is redundant given the annotations, adding minor noise, but overall structure is compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no output schema, the description lacks essential context: what a solution package is, how 'selected update sets' are processed, what the response looks like, and any prerequisites or lifecycle implications. This leaves the agent under-informed for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema documentation covers 67% of parameters, leaving 'description' undocumented. The tool description does not mention any parameters or clarify their meaning beyond what the schema already states, so it fails to compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create) and the resource (solution package from selected update sets), and distinguishes this tool from siblings like create_update_set or export_update_set by specifying the packaging/distribution purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for distribution' implies a packing use case, but there is no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The agent must infer the appropriate context from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_storyA
Create a new agile story/user story (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| epic | No | Epic sys_id | |
| sprint | No | Sprint sys_id or name | |
| assigned_to | No | User sys_id or username | |
| description | No | Story description and acceptance criteria | |
| story_points | No | Story point estimate | |
| short_description | Yes | Story title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a key behavioral requirement beyond the annotations: 'requires WRITE_ENABLED=true'. Since readOnlyHint=false already indicates a write operation, this prerequisite supplies additional context about the environment needed for success. It does not contradict any annotations and provides useful operational detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately states the action, resource, and a key requirement. Every word is essential, with no filler or redundancy. It is well-structured and front-loaded for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool with full schema coverage and annotations, the description is largely complete. It covers the core purpose and a critical prerequisite. While it does not describe return values or additional behavioral details, these are not essential given the schema and annotations. A slightly richer description could mention what happens on success, but it is not a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all 6 parameters, covering 100% of them. The description itself does not add any parameter-level details, so the schema carries the full burden. According to the rubric, a baseline of 3 is appropriate when schema coverage is high and the description adds no extra parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Create' and identifies the exact resource 'agile story/user story'. This clearly distinguishes it from sibling tools like create_epic, create_scrum_task, and create_story_dependency, which operate on different resource types. The purpose is unambiguous and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is for creating stories, implying it is the appropriate choice for that task. It also states a prerequisite (WRITE_ENABLED=true), which helps the agent decide if it can use it. However, it does not explicitly exclude alternatives or mention when not to use it, so it falls 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.
create_subflowB
Create a new reusable subflow. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Subflow name | |
| scope | No | Application scope | |
| inputs | No | Input variable definitions [{name, type, mandatory}] | |
| description | No | Subflow description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive operation, and the description merely states '[Write]', which adds little beyond the annotations. It does not disclose important behavioral details such as whether existing subflows are overwritten, permission requirements, or side effects on dependent flows.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loaded, but it is under-specified. It conveys the basic purpose but omits valuable context, making it insufficient rather than appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters (one required) and no output schema, the description is far too brief. It fails to clarify what a 'reusable subflow' is, how the 'inputs' array should be structured, or what happens after creation. The tool's overall complexity is not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage of the parameters with descriptions, so the baseline is 3. The description adds no additional parameter semantics beyond the schema, but it doesn't need to since the schema already documents each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create) and resource (reusable subflow), and the name 'create_subflow' is unambiguous. It distinguishes itself from sibling tools like list_subflows, get_subflow, and create_flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. There is no mention of prerequisites, scenarios where a subflow would be appropriate, or exclusions (e.g., 'use create_flow for process flows').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ui_actionA
Create a new UI Action (button or link) on a form (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Button/link label visible to users | |
| type | No | "button" | "context_menu" | "related_link" | "list_button" | |
| table | Yes | Table to add this action on | |
| active | No | Whether to activate immediately (default: true) | |
| script | No | Server-side script to execute when clicked | |
| condition | No | Condition to show/hide the action | |
| action_name | Yes | Internal action name (no spaces) | |
| form_button | No | Show on form (default: true) | |
| list_button | No | Show on list (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, covering the safety profile. The description adds the SCRIPTING_ENABLED=true prerequisite, which is useful behavioral context beyond the annotations, but does not disclose other behaviors such as return formats or error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core purpose and includes an important prerequisite. Every word earns its place, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal for a create tool with 9 parameters. It provides the core purpose and a key prerequisite, but does not explain the relationships between parameters (e.g., type vs. form_button/list_button) or typical usage patterns. However, the schema covers parameter semantics, and annotations cover safety, so it is adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 9 parameters, so the schema already documents semantics fully. The description adds no additional parameter-specific meaning beyond mentioning 'button or link', which loosely maps to the 'type' parameter but adds minimal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'UI Action (button or link) on a form', which distinguishes it from sibling tools like list_ui_actions, get_ui_action, and update_ui_action. It also adds a meaningful context by specifying the target placement (form).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit prerequisite: 'requires SCRIPTING_ENABLED=true'. This tells the agent when the tool is usable and implies a condition that must be checked before invocation. However, it does not explicitly mention alternatives such as updating an existing UI action, though that is inferable 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.
create_uib_componentB
Create a custom UI Builder component (macroponent). [Scripting]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Component name | |
| label | Yes | Display label | |
| category | No | Component category | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false) and non-destructive behavior, but the description adds no additional behavioral context. The '[Scripting]' tag is vague and does not clarify side effects, permissions, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently short, but the '[Scripting]' tag is unclear and slightly distracts from the core message. Despite this, it is a single sentence with no redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal and lacks essential context: it does not explain what a macroponent is, what the tool returns, any prerequisites, or how it fits into the UI Builder workflow. With no output schema, agents have no information about the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema covers most parameters. The tool description adds no extra meaning beyond what the schema provides, maintaining the baseline for adequately documented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('custom UI Builder component'), and clarifies the domain term 'macroponent'. This distinguishes it from sibling tools like create_uib_page, which targets pages rather than components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as update_uib_component or list_uib_components. The description only defines the tool's purpose without providing context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_uib_data_brokerB
Create a UI Builder data broker to feed data to a page. [Scripting]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Broker name | |
| page | No | Target page sys_id | |
| query | No | Encoded query filter | |
| table | Yes | Source table |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating operation (readOnlyHint=false), so no contradiction. The description adds slight context (the broker feeds data to a page), but discloses no additional behavioral traits such as side effects, required permissions, or what exactly gets created. It meets the baseline but adds limited value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the core purpose and includes a useful [Scripting] marker. Every word earns its place with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has four parameters but no output schema, the description is minimal and does not explain the return behavior or prerequisites (e.g., whether the target page must already exist). It is adequate for a straightforward create operation but leaves some gaps for a fully self-sufficient description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all four parameters (name, page, query, table), so the schema already provides full parameter meaning. The description does not add any additional value beyond this, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('UI Builder data broker') with a specific purpose ('to feed data to a page'). It is clear and distinguishes from generic create tools, though it doesn't explicitly differentiate from sibling data broker or UI builder creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Aside from the implied use case of feeding data to a page, there is no guidance on when to use this tool versus alternatives (e.g., creating a component or page first, or using list tools to inspect existing brokers). No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_uib_pageA
Create a new UI Builder page with route registration. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| app | No | Parent UX app sys_id | |
| path | Yes | URL path segment | |
| title | Yes | Page title | |
| layout | No | Layout type: single, sidebar, tabbed (default single) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes '[Write]' to indicate it is a write operation, which aligns with the readOnlyHint=false annotation, and adds the side effect of route registration. However, it does not disclose permissions, error conditions, or reversibility. Beyond the annotation, only the route registration is new context, so it is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. 'Create a new UI Builder page with route registration' efficiently conveys the core action, and '[Write]' adds a useful side-effect hint without unnecessary length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create operation with a well-documented schema, the description covers the core purpose adequately. However, with no output schema, it does not describe the return value, and it omits any mention of required permissions or how route registration interacts with the optional 'app' parameter. It is sufficient but has room for more detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage of all four parameters with descriptions, so the description does not add any additional parameter semantics. It does not explain defaults, relationships, or how parameters like 'app' and 'layout' affect the result beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('UI Builder page'), and adds 'with route registration' which distinguishes it from update/delete/list page tools and from component or route-only creation tools. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like list_uib_pages or update_uib_page. There is no mention of prerequisites (e.g., needing an existing UX app) or when not to use this tool. The description only states what it does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ui_policyA
Create a new UI Policy to control field behavior dynamically (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Table to apply this policy on | |
| active | No | Whether to activate immediately (default: true) | |
| script | No | Optional script to run when conditions are met | |
| conditions | No | Encoded query conditions that trigger the policy | |
| run_scripts | No | Run script in addition to UI actions (default: false) | |
| short_description | Yes | Policy description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutation (readOnlyHint=false) and non-destructive behavior. The description adds the SCRIPTING_ENABLED=true requirement, which is valuable context beyond annotations, but it does not disclose potential side effects of script execution or behavior when the prerequisite is not met.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys the core action, resource, purpose, and a key requirement without redundancy. Every word contributes to the tool's understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With complete schema descriptions, annotations covering mutation and safety, and simple create semantics, the description covers the essential purpose and prerequisite. It does not mention return values or post-create behavior, but that is not critical for a creation tool, especially with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with meaningful descriptions for all six parameters, so the description does not need to repeat them. The description adds no parameter-specific detail beyond the overall purpose, matching the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Create'), the resource ('UI Policy'), and its purpose ('to control field behavior dynamically'). This distinguishes it from sibling tools like create_ui_action or create_flow by specifying the exact artifact type and its behavioral goal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('control field behavior dynamically') and a concrete prerequisite ('requires SCRIPTING_ENABLED=true'). It does not explicitly name alternatives or state when not to use it, but the context is sufficiently clear for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_update_setA
Create a new Update Set and optionally switch to it. [Scripting]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Update Set name | |
| release | No | Target release label | |
| switch_to | No | Switch to this Update Set after creation (default true) | |
| description | No | Purpose or description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly=false and destructive=false, and the description adds the optional switch behavior, which is a side effect beyond simple creation. The '[Scripting]' tag also provides context about intended usage. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler. It includes the essential action and an optional behavior, plus a brief context tag. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple create operation, the schema fully documents parameters, and annotations cover safety, the description is sufficient. It could mention return values, but this is not critical for a create tool and the openWorldHint and sibling tools provide additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all parameters are already described in the input schema. The description does not add additional meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Create' and resource 'Update Set', clearly distinguishing it from sibling tools like list_update_sets, switch_update_set, and complete_update_set. The optional switch behavior is also stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use the tool (to create an update set), but there is no explicit guidance about alternatives or when not to use it. Siblings like switch_update_set exist, but the description does not mention them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_usem_ruleA
Create a USEM/VR automation rule. Provide the rule_type and a fields object matching that table allowlist (e.g. name/rule_name, active, order, condition, assignment_group, ttr_max). Every field is read back after the write; a value ServiceNow did not store fails with FIELDS_NOT_SAVED. remediation_task with assignment_type 5 (Group by field) also needs assignment_group_fields — a field path on the finding that matches one of field_1..6 (e.g. "assignment_group"). The Table API cannot write that field, so it is set by a run-once server script and additionally requires SCRIPTING_ENABLED=true. Create rules inactive and enable them with set_usem_rule_active after checking them. [Write — requires WRITE_ENABLED=true; admin-level config change]
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Column/value map for the rule record. Schema allows the union of all USEM rule fields; runtime also restricts fields to the selected rule_type. | |
| rule_type | Yes | Which rule family to operate on: assignment (sn_sec_wf_assign_rule), remediation_task, remediation_target (TTR/SLA targets), risk_calculator + calculator_rule + risk_field + risk_score_weight + calculator_config (risk scoring), classification + classification_rule, exception_rule + exception_config, rollup (score rollup), approval, auto_close, exclusion | |
| wait_seconds | No | Only used for script-written fields (assignment_group_fields): how long to wait for the run-once job (0-120, default 60). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only say write, non-destructive, non-idempotent, open-world). It discloses read-back verification with the FIELDS_NOT_SAVED failure mode, the Table API's inability to write assignment_group_fields and the run-once script workaround, the SCRIPTING_ENABLED gate, and the WRITE_ENABLED admin-level requirement. No contradiction with readOnlyHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, every sentence carries non-redundant information, and the density is justified by the tool's complexity. The long conditional sentence about remediation_task/assignment_group_fields is heavy, and the WRITE_ENABLED gate sits in a trailing bracketed tag rather than near the front, which is a minor structural weakness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still explains return behavior via the read-back guarantee and the FIELDS_NOT_SAVED error. Prerequisites, side effects (script-run field write), sequencing with set_usem_rule_active, and the write gate are all covered, leaving nothing an agent needs before calling it unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3; the description adds real value by tying the fields object to a per-rule_type allowlist and by spelling out the conditional requirement and value format for assignment_group_fields ('a field path on the finding that matches one of field_1..6'). It stops short of enumerating allowlists per type or mentioning wait_seconds, so it is not fully additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a USEM/VR automation rule') and immediately scopes it to a rule_type plus a per-type field allowlist. It is clearly separable from update_usem_rule and set_usem_rule_active, the latter of which is explicitly named as the follow-up step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit workflow guidance ('Create rules inactive and enable them with set_usem_rule_active after checking them'), names the sibling that performs the enable step, and details a conditional prerequisite for remediation_task with assignment_type 5. This tells the agent both when to use this tool and how to sequence it relative to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_userA
Create a new user account (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address | ||
| title | No | Job title | |
| last_name | Yes | Last name | |
| user_name | Yes | Unique username (login name) | |
| department | No | Department name or sys_id | |
| first_name | Yes | First name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint: false) and non-destructive (destructiveHint: false). The description adds the WRITE_ENABLED=true requirement, which is useful, but it does not explain side effects, return values, or error behaviors such as duplicate username handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly packed sentence that states the primary purpose and a key prerequisite. There is no fluff or repetition; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a create operation with no output schema, the description should disclose what is returned (e.g., sys_id of the new user), how duplicate usernames are handled, and any external side effects. The description is too thin to be fully self-sufficient, even with annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with clear descriptions (100% coverage), so the description does not need to add parameter details. The tool description contributes no additional parameter semantics beyond the schema, warranting the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the target ('a new user account'), which distinguishes it from sibling tools like update_user and list_users. The condition 'requires WRITE_ENABLED=true' adds useful context without obscuring the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly contrast this tool with alternatives, but the purpose strongly implies it is for creating new user accounts only. The WRITE_ENABLED condition is a prerequisite rather than guidance for when to choose this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ux_app_routeC
Register a new route (URL path) in a UX app. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Route path | |
| title | No | Route title | |
| app_sys_id | Yes | UX app sys_id | |
| page_sys_id | Yes | Target UIB page sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds little beyond confirming the write, with no disclosure of potential errors, required permissions, or idempotency behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using a single sentence plus a [Write] tag. It is front-loaded and contains no filler, earning a high score for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool, the description lacks crucial context such as return value (no output schema), error handling for duplicate routes, and required permissions. The available annotations provide some safety info, but the overall completeness is insufficient for an agent to use the tool without further assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters have schema descriptions (100% coverage), and the tool description does not add further semantic detail. The schema-level descriptions like 'Route path' and 'Target UIB page sys_id' are minimal but sufficient, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation (register) and the resource (a route/URL path in a UX app). It is specific enough to distinguish this from sibling tools like create_uib_page or create_ux_experience, though it doesn't explicitly call them out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description simply states what it does, leaving the agent to infer usage context from the tool name and sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ux_experienceB
Create a new UX Experience (app shell) configuration. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Experience name | |
| app_sys_id | Yes | UX app sys_id | |
| landing_page | No | Landing page sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description restates that this is a write operation ('[Write]') which is already implied by annotations (readOnlyHint=false), and adds no other behavioral context such as side effects, permissions, or what happens to existing configurations. It provides no value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that immediately conveys the tool's purpose with no wasted words. The '[Write]' tag is somewhat redundant but does not harm conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema covers parameters and annotations cover safety, making this minimally viable. However, the description lacks information about what a UX Experience configuration entails, how it relates to app shells, and any prerequisites or consequences. It leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are fully described in the input schema, so the description does not need to elaborate. It adds no meaning beyond the existing schema parameter descriptions, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the specific resource ('a new UX Experience (app shell) configuration'), using 'app shell' to add specificity. It distinguishes from sibling tools that create other UX artifacts, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like create_ux_app_route or list_ux_apps. There are no prerequisites, exclusions, or contextual clues for selecting this over other creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_va_topicC
Create a new Virtual Agent conversation topic. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Topic name (display name) | |
| active | No | Activate immediately (default true) | |
| category | No | Topic category sys_id | |
| description | No | What this topic handles | |
| fulfillment_type | No | Fulfillment type: "itsm_integration", "custom", "web_service" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only adds a redundant '[Write]' tag, which already matches the readOnlyHint=false annotation. No additional behavioral context such as required permissions, side effects, idempotency implications, or post-creation steps is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using a single sentence with a clear verb and resource. However, the '[Write]' tag is redundant given the annotation, so the description isn't perfectly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema, the description is too minimal. It doesn't explain what happens after creation, any prerequisites, or the relationship to get/update/list VA topic tools. The schema covers field details, but the broader workflow context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all five parameters. The description adds no parameter-level detail, but the baseline of 3 is appropriate since the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create) and the resource (Virtual Agent conversation topic), making the purpose unambiguous. However, it does not explicitly distinguish from related sibling tools like update_va_topic or list_va_topics_full, so it stops short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not mention that this is for new topics only, nor does it exclude cases better suited for updating or retrieving existing topics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_vulnerability_groupA
Create a Vulnerability Group / Remediation Task (sn_vul_vulnerability). Being task-based it accepts assignment_group, assigned_to and state. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | State filter. Single value or comma-separated list. 1=Open, 2=Under Investigation, 10=Awaiting Implementation, 11=In Review, 12=Deferred, 101=Resolved, 3=Closed | |
| assigned_to | No | Assignee sys_id | |
| description | No | Detailed description | |
| ttr_target_date | No | Remediation target date (YYYY-MM-DD HH:MM:SS) | |
| assignment_group | No | Assignment group sys_id | |
| short_description | Yes | Short description / title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, openWorld=true, idempotent=false and destructive=false, so the safety profile is covered. The description adds genuinely new information beyond them: the WRITE_ENABLED=true gate, which an agent must know before attempting the call, plus the note that the record is task-based and therefore supports assignment and state fields. Return value and failure behavior remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the resource identified first and the operational gate second — nothing is buried. The bold markdown on the write warning and the slash-joined tool name are slightly noisy but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema, the critical preconditions are covered, but an agent still lacks the required-parameter cue (short_description), any statement of what the call returns, and — most importantly in this sibling set — how this differs from create_remediation_task and create_vulnerable_item.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the full state enum is already documented in the schema; baseline 3 applies. The description's only added semantic is the framing that assignment_group, assigned_to and state work here because the record is task-based, which is mild value over the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb and resource ('Create a Vulnerability Group / Remediation Task') and names the backing table (sn_vul_vulnerability), so the operation is unambiguous. It does not, however, separate itself from the sibling 'create_remediation_task', which appears to overlap substantially — the slash-joined name actually muddies that boundary rather than clarifying it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is a precondition ('requires WRITE_ENABLED=true'), which is useful but tells the agent about environment gating rather than when to pick this over 'create_remediation_task', 'update_vulnerability_group', or 'add_vi_to_remediation_task'. No when-not-to-use or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_vulnerable_itemA
Create a Vulnerable Item (sn_vul_vulnerable_item) with the vulnerability reference intact. A before business rule clears the vulnerability reference on REST inserts, which silently disables the "Link to Remediation Tasks" automation; this tool re-applies the reference via PATCH after insert and verifies it stuck. Requires both vulnerability and cmdb_ci so the remediation-task rule engine can group the item. ServiceNow regenerates short_description as " detected on " on insert, so a value passed here cannot be used to tag items or to select them later (e.g. in a remediation task rule condition) — use source instead; the result reports overwritten fields. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | State filter. Single value or comma-separated list. 1=Open, 2=Under Investigation, 10=Awaiting Implementation, 11=In Review, 12=Deferred, 101=Resolved, 3=Closed | |
| source | No | Detection source label (e.g. scanner name) | |
| cmdb_ci | Yes | 32-char sys_id of the affected CI | |
| assigned_to | No | Assignee sys_id | |
| description | No | Detailed description | |
| vulnerability | Yes | 32-char sys_id of the vulnerability entry (sn_vul_entry, e.g. an NVD entry) | |
| assignment_group | No | Assignment group sys_id | |
| short_description | No | Usually overwritten: the "Update short description" business rule sets it to "<vulnerability> detected on <CI>" on insert. Use `source` to tag test or imported items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations: it discloses the before-business-rule that silently clears the reference, the internal PATCH-and-verify workaround, that the result reports overwritten fields, and that WRITE_ENABLED=true is required. This is exactly the side-effect and prerequisite context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core behavior and the reason for the tool, then layers caveats and the write prerequisite in bold. Sentences are long and dense with parenthetical detail, but every clause carries operational information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema, it covers the crucial gaps: preconditions (WRITE_ENABLED), required fields and their rationale, silent field overwrites, and that the response reports overwritten fields. An agent has everything needed to call it correctly and interpret the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns extra credit by explaining WHY `vulnerability` and `cmdb_ci` are both mandatory (the remediation rule engine needs them to group the item) and by steering tagging toward `source`. The short_description caveat largely restates the schema, keeping it below 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (create a Vulnerable Item, sn_vul_vulnerable_item) and immediately distinguishes itself from the generic insert path by explaining it preserves the `vulnerability` reference that a business rule strips. An agent can tell exactly what this does and why it exists versus plain record creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear when this tool is needed (whenever the vulnerability reference must survive insert so the remediation-task automation works) and warns against using short_description for tagging. It doesn't explicitly name sibling alternatives such as add_vi_to_remediation_task or update_vulnerability, so routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_workspaceA
Create inactive legacy Agent Workspace metadata only. Does not provision a Configurable Workspace or its pages. Configure lists separately. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Workspace name | |
| description | No | ||
| workspace_url | Yes | Legacy workspace URL segment (e.g. agent) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the bar is lower. The description still adds real value beyond them: the object created is *inactive* legacy metadata and does not provision pages, which materially changes what the agent should expect after the write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the verb and scope, then the exclusions. The trailing '[Write]' marker is redundant with readOnlyHint=false but costs almost nothing; no filler otherwise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter creation tool with annotations but no output schema, the description tells the agent what gets created, in what state, and what is not created. Gaps are minor: no info on return value identity (workspace id/url) or uniqueness constraints on workspace_url.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% with name and workspace_url documented; the `description` parameter has no description in either place. The description itself says nothing about parameters, so it neither compensates for the gap nor adds meaning beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create inactive legacy Agent Workspace metadata') and immediately bounds the scope by naming what it does NOT do (no Configurable Workspace, no pages). This cleanly separates it from siblings like configure_workspace_list and create_ux_experience.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Configure lists separately' implicitly routes the agent to configure_workspace_list, and the 'does not provision a Configurable Workspace or its pages' sentence excludes a likely misuse. It stops short of naming the alternative tool explicitly or stating prerequisites (e.g. existing URL segment must be unique).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_attachmentADestructive
Delete an attachment from a record (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| attachment_sys_id | Yes | sys_id of the attachment to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey destructiveness (destructiveHint=true). The description adds the WRITE_ENABLED requirement, which is useful operational context beyond annotations. However, it does not describe other behavioral aspects such as irreversibility or cascading effects, but with annotations covering the core safety profile, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It clearly communicates the operation and a key precondition, though it is slightly thin on usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete tool with annotations marking it destructive, the description is reasonably complete. It covers the operation, the target object, and a permission requirement. No output schema exists, but none is needed for a simple delete confirmation. The description could mention ripple effects, but annotations and simplicity mitigate the need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single parameter attachment_sys_id, and the description does not add additional meaning beyond what the schema provides. Baseline of 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and the target resource ('an attachment from a record'), which is specific and distinguishes it from siblings like upload_attachment, list_attachments, and get_attachment_metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use this tool versus alternatives. The only additional context is 'requires WRITE_ENABLED=true', which is a prerequisite rather than usage direction. It does not mention when deletion is appropriate or suggest any alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_system_propertyADestructive
Delete a system property by name. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Property name to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, which convey the mutation risk. The description adds no extra behavioral context such as permanence, permissions, or effect on dependent processes, so it relies entirely on annotations. It doesn't contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence is perfectly concise and front-loads the action. No wasted words, and the [Write] marker is a useful additional cue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete tool with clear annotations and no output schema, the description is sufficient. It covers what the tool does and the key argument. The missing edge-case behavior (e.g., nonexistent property) is not necessary for a complete minimal description, and the annotations carry the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the 'name' parameter with description 'Property name to delete'. The description adds no additional parameter semantics beyond the schema, so baseline 3 applies given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Delete' and clearly identifies the resource 'system property' and the key 'by name'. This distinguishes it from sibling tools like get_system_property, set_system_property, and list_system_properties. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you need to remove a system property. It doesn't explicitly name alternatives or exclusions, but the context is clear given the sibling set. However, it lacks explicit guidance on when not to use it or alternatives like setting to null, so it's not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_uib_pageBDestructive
Delete a UI Builder page. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | UIB page sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral detail beyond what the annotations already convey. The '[Write]' tag duplicates the readOnlyHint=false annotation, and 'Delete' is implied by the tool name. It does not mention irreversibility, permissions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence plus a write tag. No wasted words; the essential action and resource are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with one well-documented parameter and annotations indicating destructiveness, the description is adequate. However, it lacks any mention of return behavior or prerequisites, preventing a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter sys_id is already fully described in the schema ('UIB page sys_id'). The description adds no additional semantic detail, so it relies on the 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Delete' with resource 'UI Builder page', clearly distinguishing it from sibling tools like get_uib_page, create_uib_page, and update_uib_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., retiring vs. deleting, or prerequisites). It simply states the action without context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_tableARead-onlyIdempotent
Return full field schema for a ServiceNow table using sys_dictionary — includes field types, reference targets, mandatory/unique flags, and parent table. More accurate than get_table_schema for empty tables or custom tables.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Table name to inspect (e.g. "incident", "sn_vul_vulnerable_item") | |
| include_inherited | No | Include fields inherited from parent tables (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, open-world call, so safety is covered. The description adds real context beyond that: the dictionary-table data source and the enumerated content of the response (types, reference targets, mandatory/unique flags, parent table), which tells the agent what quality of output to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded: the capability first, the sibling comparison second. No filler, and the differentiator lands where an agent will read it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields, which is the main gap it needed to close. Only minor items are missing, such as pagination or behavior on nonexistent table names, but nothing that would block a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters documented including the default for include_inherited. The description's mention of 'parent table' loosely relates to inheritance but adds no syntax or behavior beyond what the schema already states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource ('Return full field schema for a ServiceNow table'), plus the underlying source (sys_dictionary) and the exact contents returned. It also explicitly distinguishes itself from the sibling get_table_schema, so an agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete selection rule: prefer this over get_table_schema for empty tables or custom tables. It stops short of saying when get_table_schema is the better choice (e.g., large OOB tables where speed matters), so the routing guidance is one-directional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensure_active_update_setAIdempotent
Ensure an active Update Set exists; create one automatically if none is in progress. [Scripting]
| Name | Required | Description | Default |
|---|---|---|---|
| default_name | No | Name to use when auto-creating (default: "AI Session Update Set") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, openWorldHint=true, readOnlyHint=false, and destructiveHint=false. The description adds conditional creation logic ('create one automatically if none is in progress') and the '[Scripting]' context, which provides useful behavior beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no redundant text. The '[Scripting]' tag is a compact, informative qualifier. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple idempotent setup tool with one optional parameter and no output schema, the description covers purpose and trigger condition adequately. It does not mention return values, but none are expected, and the behavior is straightforward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%—the only parameter (default_name) is fully described in the schema. The tool description adds no additional parameter semantics, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Ensure an active Update Set exists; create one automatically if none is in progress.' This specific verb+resource combination distinguishes it from siblings like create_update_set (which always creates) and switch_update_set (which changes the active set).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when an active update set is needed and auto-creation is acceptable—but it does not explicitly contrast with alternatives like switch_update_set or create_update_set, nor does it state when not to use. The usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_background_scriptADestructive
Run server-side JavaScript on the instance and return what it returns. The script runs in the global scope inside a run-once Scheduled Script Execution (ServiceNow has no REST endpoint that runs scripts synchronously), so it executes when the instance scheduler picks the job up, normally within seconds. End the script with return <value>; to get a value back (JSON-serialisable; max ~3.5 KB). [Scripting]
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | JavaScript to execute (max 6000 chars). It is wrapped in a function, so `return` works. | |
| wait_seconds | No | How long to wait for the job to run (0-120, default 30). If the scheduler has not run it by then, script_scheduled is returned with the job. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond annotations: execution occurs through a run-once Scheduled Script Execution job picked up by the scheduler, normally within seconds. It also documents the return mechanism (`return <value>;`), JSON-serialisability, and the ~3.5 KB return limit. These details are important for a destructive/open-world arbitrary-code tool and are consistent with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, followed by execution mechanics and return-value details. Every sentence carries useful information for selecting and invoking the tool, with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity arbitrary-code execution tool, the description covers the execution model, asynchronous behavior, return-value mechanism, and size limit. Annotations already carry the destructive/open-world/idempotency profile, and there is no output schema to explain. It could additionally mention privilege context or side-effect scope, but the core information needed to call it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both `script` and `wait_seconds`. The description still adds useful meaning by explaining the `return` convention, JSON-serialisable return values, and the ~3.5 KB return limit. It reinforces the wait behavior by noting that if the scheduler has not run the job by then, a scheduled-job result is returned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: "Run server-side JavaScript on the instance and return what it returns." It is clear about the execution model and distinguishes itself from client-side/script-record tools by emphasizing background server-side execution. It does not explicitly name a sibling tool for comparison, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when this tool is appropriate: arbitrary server-side JavaScript execution via a run-once Scheduled Script Execution job. It also explains the asynchronous scheduling behavior and the lack of a synchronous REST endpoint, which shapes when an agent should choose it. It does not explicitly state when not to use it or name alternatives, so it is not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_propertiesARead-onlyIdempotent
Export system properties matching a query to a JSON object (useful for environment snapshots)
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Encoded query filter | |
| category | No | Filter by category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the agent knows the operation is safe and idempotent. The description adds that the output is JSON and the query matching, but no additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no fluff. It is front-loaded with the action and output, making it immediately useful for the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple export tool with two optional parameters and annotations covering safety, the description covers the essential purpose and use case. It could elaborate on output structure or encoding requirements, but overall it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description references 'matching a query' which ties to the query parameter, but adds no extra meaning beyond schema descriptions. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports system properties matching a query to a JSON object, with a specific use case for environment snapshots. This distinguishes it from sibling tools like list_system_properties or bulk_get_properties by specifying the action (export) and output format (JSON).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'useful for environment snapshots,' implying a use case, but does not provide explicit when-to-use or when-not-to-use guidance. It does not compare with alternatives like list_system_properties or get_system_property, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_report_dataBRead-onlyIdempotent
Export raw table data as structured JSON for use in external reports
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 100, max: 1000) | |
| query | No | Encoded query filter | |
| table | Yes | Table to export from | |
| fields | No | Comma-separated fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, idempotentHint=true, openWorldHint=true) already indicate read-only, idempotent, and open-world behavior. The description adds no additional behavioral context, such as potential large data volumes or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words, efficiently conveying the core action and purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite annotations covering safety, the description lacks information about the output format ('structured JSON' is vague), pagination, query encoding, and does not clarify when to prefer this over sibling data retrieval tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 4 parameters with descriptions (100% coverage), so the description adds no further meaning beyond stating 'structured JSON'. Baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it exports raw table data as structured JSON for external reports, specifying the verb, resource, format, and purpose, and distinguishes from sibling retrieval tools by targeting external report use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for external reports but lacks explicit guidance on when to use this tool versus alternatives like get_record, query_records, or list_*, and does not provide when-not-to-use criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_update_setBRead-onlyIdempotent
Get the XML export payload for an Update Set (as used in migration). [Scripting]
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Update Set sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, fully disclosing that the tool is a safe, read-only, idempotent operation. The description adds minimal context beyond annotations ('as used in migration' and '[Scripting]'), providing some behavioral context without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with an additional bracketed note. Every word serves a purpose—no redundancy, no filler. It is appropriately front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool is a simple read operation with one parameter and safety is fully covered by annotations, the description is nearly complete. It states the output format (XML) and usage context (migration). Minor gaps include lack of error conditions or return structure details, which are less critical given the tool's simplicity and annotation coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the single parameter 'sys_id' with a clear description ('Update Set sys_id'), achieving 100% coverage. The tool description does not add any additional meaning or clarification beyond what the schema provides, so it meets the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the XML export payload for an Update Set used in migration. It specifies the action ('Get') and resource ('XML export payload'), which is distinct from siblings like preview_update_set or list_update_sets. However, it does not explicitly differentiate from these sibling tools, which would elevate it to a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as preview_update_set or get_current_update_set. It mentions 'as used in migration' but lacks explicit when-to-use or when-not-to-use instructions, and does not list any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_artifactARead-onlyIdempotent
Search for platform artifacts by name, type, or scope (business rules, scripts, widgets, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Artifact name or pattern | |
| type | No | Artifact type: business_rule, script_include, client_script, ui_policy, ui_action, widget, flow, sys_properties | |
| limit | No | ||
| scope | No | Application scope name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and idempotency. The description adds minimal behavioral context (search criteria) beyond annotations. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence conveys the tool's purpose without extraneous information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers basic input criteria but lacks details on output (e.g., result format, pagination). Given the complexity of platform artifacts and no output schema, more context would improve completeness. Annotations partially compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% (3 of 4 parameters have descriptions). The description echoes 'name, type, or scope' but adds no extra meaning beyond the schema. The 'limit' parameter is omitted. Baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for platform artifacts by name, type, or scope, with examples like business rules and scripts. It is specific and distinguishes from sibling search tools (e.g., search_catalog, search_knowledge) through artifact focus, but does not explicitly contrast with alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding platform artifacts but provides no explicit guidance on when to use this tool versus others (e.g., search_cmdb_ci, list_business_rules). It lacks when-not-to-use or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fire_eventA
Fire a custom ServiceNow event for a specific record (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| parm1 | No | Optional first parameter passed to event handlers | |
| parm2 | No | Optional second parameter passed to event handlers | |
| table | Yes | Table name of the target record | |
| event_name | Yes | Event name to fire (must be registered) | |
| record_sys_id | Yes | sys_id of the record to fire the event on |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the specific operational requirement 'requires WRITE_ENABLED=true', which is useful context beyond the annotations. However, it does not disclose potential side effects (e.g., event handlers may run asynchronously), non-idempotency, or what happens after firing. Since annotations already indicate non-read-only and non-idempotent behavior, the added context is modest but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core action ('Fire a custom ServiceNow event') and adds a relevant prerequisite. Every word contributes value with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description, combined with the schema, covers the essentials: what to fire, on which record, and the write-enabled prerequisite. However, there is no output schema and the description does not explain return values, asynchronous behavior, or side effects. It is minimally viable but leaves gaps for an agent trying to reason about consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the description does not need to restate field semantics. The description adds no additional meaning beyond the schema, but the schema already documents all five parameters adequately. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Fire a custom ServiceNow event for a specific record.' It uses a concrete verb and resource, and the 'custom event' + 'specific record' language distinguishes it from related tools like register_event or list_event_registry. The purpose is immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to fire a custom event on a record) but does not explicitly state alternatives or when-not-to-use scenarios. The only guidance is the prerequisite 'requires WRITE_ENABLED=true', which is a condition rather than a usage guideline. No sibling tools are mentioned as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_summaryBRead-onlyIdempotent
Generate an AI summary of any record using Now Assist (latest release: sn_assist/skill/summarize)
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Table name (e.g., "incident", "change_request") | |
| sys_id | Yes | System ID of the record |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and openWorldHint=true. The description adds no behavioral disclosure beyond stating it uses AI, omitting details like output format, performance, or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with parenthetical version info, effectively concise but could benefit from slight restructuring for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema, the description omits what the summary looks like or how it is returned, leaving ambiguity for the AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters (table and sys_id) described. The description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates an AI summary of any record using Now Assist, distinguishing it from sibling tools that handle records differently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for generating summaries but lacks explicit guidance on when to use vs sibling tools, such as when not to use or alternative approaches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_work_notesB
Generate AI-drafted work notes for a record based on its current context
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Table name | |
| sys_id | Yes | System ID of the record | |
| context | No | Additional context to include in the draft |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and openWorldHint=true, suggesting side effects (e.g., AI calls, logging). However, the description does not clarify whether the drafted work note is saved automatically, what side effects occur, or any permission or cost implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that directly states the tool's purpose without extraneous detail. Highly concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, yet the description does not indicate what the tool returns (e.g., generated text, confirmation). Lacks details on AI model behavior, latency, or required permissions. Incomplete for a non-trivial AI interaction tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with basic descriptions. The description adds no additional meaning beyond what the schema provides (e.g., what 'context' expects). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'generate' and resource 'work notes' with context from the record. It implicitly distinguishes from sibling tools like add_work_note (which adds a pre-written note) and suggest_resolution (which suggests resolution, not work notes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives such as add_work_note or generate_summary. The description does not mention prerequisites, suitable scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_aclARead-onlyIdempotent
Get full details of an ACL rule including its script and role requirements (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | ACL sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is read-only and idempotent. The description adds the behavioral constraint that SCRIPTING_ENABLED must be true, which is additional context beyond annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no fluff. It front-loads the purpose and includes key details (including script and role requirements) and a precondition. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, strong annotations), the description is complete. It tells the agent what the tool returns (full details including script and role requirements) and a critical precondition. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for the only parameter, sys_id. The description does not add any additional meaning or context to the parameter beyond what the schema provides. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves full details of an ACL rule, specifically including script and role requirements. This distinguishes it from sibling tools like list_acls, which likely provide only summary lists. The verb 'Get' and resource 'ACL rule' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite (requires SCRIPTING_ENABLED=true), which provides some guidance. However, it does not explicitly compare to similar tools (e.g., list_acls) or state when to use this tool over alternatives. The guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alertARead-onlyIdempotent
Get one alert by number or sys_id, with its recent history (em_alert_history) and related tasks (incident/change/problem links).
| Name | Required | Description | Default |
|---|---|---|---|
| history_limit | No | How many history entries to include (default 10, max 50) | |
| number_or_sysid | Yes | Alert number (e.g. Alert0010005) or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, but the description adds genuinely new behavioral context: this is a composite fetch that also pulls recent em_alert_history rows and linked incident/change/problem tasks. That tells the agent the response is broader than a single record, which annotations do not convey. It omits error behavior for an unknown number/sys_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core action and identifier forms, then appends the payload details. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully characterizes what comes back (alert + history + related task links), which is exactly what an agent needs to know before calling. A brief note on behavior when the identifier doesn't resolve would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in-schema, including the default of 10 and max of 50 for history_limit. The description merely restates the acceptable identifier forms ('number or sys_id') and that history is included, adding no syntax or constraint detail beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get one alert') and quantifies scope ('one') versus the sibling list_alerts, plus names the payload components (history, related tasks). It does not explicitly name the sibling alternatives such as get_alert_summary or acknowledge_alert, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus list_alerts, get_alert_summary, or the mutation tools acknowledge_alert/close_alert/update_alert. Usage must be inferred entirely from the word 'Get one'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alert_summaryARead-onlyIdempotent
Operational overview of open alerts: counts by severity, by state, acknowledged vs not, and the top sources. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| top_sources | No | How many sources to list (default 5, max 20) | |
| include_closed | No | Include Closed alerts in the counts (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, and the description redundantly says 'Read-only.' It adds useful scope by clarifying that the summary is based on open alerts by default, but it does not cover auth needs, data freshness, or rate behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is one front-loaded sentence plus a short 'Read-only' tag. It is efficient overall, though the read-only note repeats annotation information and does not add new value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple aggregate summary with no output schema, the description is mostly complete because it lists the counted dimensions and top sources. It could be stronger by stating when this overview is preferable to listing or retrieving individual alerts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully documented in the schema. The description mentions 'top sources' and 'open alerts,' which loosely aligns with top_sources and include_closed, but adds no real syntax or default meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (open alerts) and specifies the summary dimensions: severity counts, state counts, acknowledgement status, and top sources. It implicitly differentiates itself from list_alerts/get_alert by being an aggregate overview, but it does not explicitly name sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Operational overview' implies a dashboard-style use case, but the description gives no explicit when-to-use guidance or when to choose list_alerts, get_alert, or query_records instead. The usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_archive_restore_statusBRead-onlyIdempotent
Get the restore status of one archive log entry, including whether its primary record is live or archived.
| Name | Required | Description | Default |
|---|---|---|---|
| archive_log_sys_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful context about what the response contains (live vs. archived state of the primary record), but says nothing about failure modes for an unknown/invalid sys_id or how long restore status remains queryable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; the resource and the returned information are both stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only, single-parameter status lookup with no output schema, the description conveys enough to call it correctly and even hints at the returned fields. The only real gap is how to source the archive_log_sys_id, which matters because the parameter is undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter (archive_log_sys_id) has no schema description. The description only implies that the argument identifies 'one archive log entry'; it does not specify the expected sys_id format or where an agent would obtain such an ID (e.g., from list_archive_rules or restore_archived_record output).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') plus resource ('restore status of one archive log entry') and even names the key payload ('whether its primary record is live or archived'). It implicitly distinguishes itself from the sibling restore_archived_record (read status vs. perform a restore), though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus the closely related restore_archived_record, nor any stated precondition (e.g., a restore must already have been initiated). An agent must infer usage entirely from the singular 'one archive log entry' phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assetARead-onlyIdempotent
Get full details of an IT asset including financial and lifecycle data
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Asset sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. The description adds context about the data included (financial, lifecycle) but does not disclose additional behavioral traits such as response structure or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action and resource, with no unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (single parameter, no output schema), the description adequately conveys the purpose and the type of data returned. It could be more complete by mentioning the output format, but it is sufficient for a straightforward retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes the single parameter 'sys_id' as 'Asset sys_id'. The description adds no further meaning beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'IT asset', and the scope 'including financial and lifecycle data'. It distinguishes from sibling tools like 'list_assets' and 'update_asset'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for retrieving a single asset's details, contrasting with 'list_assets' for listing, but it does not explicitly state when to use this tool versus alternatives like 'get_asset_contracts' or 'get_asset_lifecycle'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_atf_failure_insightARead-onlyIdempotent
Get ATF Failure Insight data — metadata changes between last successful and failed run (role changes, field value changes)
| Name | Required | Description | Default |
|---|---|---|---|
| result_sys_id | Yes | System ID of the failed suite result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true. The description adds value beyond annotations by specifying the output content: metadata changes (role and field value changes). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 19 words, front-loaded with the action, and contains no redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and safety annotations, the description adequately explains what the tool returns. No output schema is needed as the output is implied. Slight lack of detail on 'role changes' and 'field value changes' but sufficient for understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter described. The description does not add additional meaning beyond the schema, but baseline 3 is appropriate given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'ATF Failure Insight data', and specifies the scope as metadata changes between last successful and failed run. This distinguishes it from sibling tools like get_atf_suite, get_atf_suite_result, and get_atf_test.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for comparing runs but does not explicitly state when to use this tool vs alternatives. No mention of when not to use or direct comparisons with other ATF tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_atf_suiteARead-onlyIdempotent
Get details of a test suite including test count
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | Test suite sys_id or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=true, indicating a safe read. The description adds the detail of test count, which is useful but not essential beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence of 10 words, front-loaded with the verb and resource. No wasted words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should hint at return structure. It mentions 'including test count' but nothing else. For a simple retrieval tool, it's borderline adequate but could specify that full details are returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes 'sys_id_or_name' as 'Test suite sys_id or name'. The description adds no additional meaning or format guidance for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and resource 'test suite', and explicitly mentions including test count, clearly distinguishing it from siblings like get_atf_suite_result or get_atf_test.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and parameter (sys_id_or_name), but there is no explicit guidance on when to use this versus list_atf_suites or get_atf_test. No when-not or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_atf_suite_resultBRead-onlyIdempotent
Get the results of a test suite run
| Name | Required | Description | Default |
|---|---|---|---|
| result_sys_id | Yes | System ID of the suite result record |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations (readOnlyHint, idempotentHint, openWorldHint) already communicate safe, idempotent behavior. The description adds no further behavioral context, such as what the return value contains or any potential side effects, which is acceptable given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundancy. It efficiently communicates the tool's purpose without any unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and comprehensive annotations, the description is largely complete. However, it does not specify the nature of the returned 'results', which would be helpful given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides a complete description for the single parameter (result_sys_id as 'System ID of the suite result record'), leaving no ambiguity. The tool description does not add extra meaning, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves results of a test suite run, using a specific verb and resource. However, it does not explicitly distinguish itself from sibling tools like 'get_atf_suite' or 'list_atf_test_results', which could cause ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites or provide context for selection, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_atf_testARead-onlyIdempotent
Get details of a specific test case
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the test |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and openWorldHint=true, covering safety and idempotency. The description adds no further behavioral context (e.g., no mention of required permissions, data freshness, or side effects). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that immediately communicates the tool's purpose. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one parameter and informative annotations, the minimal description is adequate but could be improved by clarifying what 'details' are returned, especially since no output schema is provided. It lacks some context but is not incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'sys_id', so the schema already explains its purpose. The description does not add any additional meaning or usage hints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Get details') and the resource ('specific test case'), distinguishing it from sibling tools like 'list_atf_tests' which lists multiple test cases. The verb and resource are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as 'list_atf_tests' for listing multiple tests. No prerequisites or exclusions are mentioned, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attachment_metadataARead-onlyIdempotent
Get metadata (name, type, size) of a specific attachment by its sys_id
| Name | Required | Description | Default |
|---|---|---|---|
| attachment_sys_id | Yes | Attachment sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly and idempotent hints. Description adds the specific fields returned, which is useful but not extensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, front-loaded verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple structure, the description adequately covers inputs and outputs. Could add output format but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the parameter fully. Description says 'by its sys_id', aligning but not adding new meaning. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves metadata (name, type, size) of a specific attachment by sys_id. It distinguishes from list_attachments and other getters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (specific attachment metadata) but does not explicitly mention when not to use or alternatives like list_attachments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_control_testARead-onlyIdempotent
Get full details of a single Control Test by sys_id or number (e.g. "CTR0000153").
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Control Test number (CTRxxxxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is fully covered elsewhere. The description adds only that it returns 'full details' of a single record, without saying what those details include or what happens on an unknown identifier.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the identifier forms and an example, no filler or repetition. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read with no output schema, the description should hint at what 'full details' returns (e.g. test steps, results, related controls). As written it is adequate but leaves the agent guessing about the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already specifies both the CTRxxxxxxx number format and the 32-char sys_id. The description's example 'CTR0000153' merely restates that format, adding no new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('single Control Test') and names the two accepted identifier forms. It distinguishes itself from its sibling list_audit_control_tests only implicitly through 'single' and 'full details' rather than by naming it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: fetch one record by number or sys_id, complementary to the list tool. The description never states when to prefer this over list_audit_control_tests, nor any prerequisite such as needing the sys_id from a prior list call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_engagementARead-onlyIdempotent
Get full details of a single Audit Engagement by sys_id or number (e.g. "ENG0000104").
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Engagement number (ENGxxxxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds that it returns 'full details' for a single record, but does not clarify permissions, failure behavior, or what 'full details' includes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that identifies the operation, scope, and accepted identifier format without wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with full schema coverage and clear annotations, the description is largely sufficient. The only minor gap is that 'full details' is vague and there is no output schema to define the returned fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter is already fully documented. The description adds an example value, but mostly repeats the schema's explanation of number_or_sysid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: get full details of a single Audit Engagement. The word 'single' helps distinguish it from list_audit_engagements, though it does not explicitly name that sibling or other alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: retrieve one engagement when you already have its sys_id or number. There is no explicit guidance on when to use this instead of list_audit_engagements or other audit-related getters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_business_ruleARead-onlyIdempotent
Get full details and script body of a business rule (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the business rule |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. The description adds the prerequisite SCRIPTING_ENABLED=true, which is behavioral context beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded and contains no unnecessary words. Efficiently communicates purpose and prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter and annotations covering safety, the description provides sufficient detail (including prerequisite) for correct invocation. No output schema exists, but the description states what is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the sys_id parameter described. The description adds no further semantic detail beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get full details and script body of a business rule', specifying the verb and resource. It distinguishes from sibling tools like list_business_rules (list) and update_business_rule (modify).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the prerequisite 'requires SCRIPTING_ENABLED=true', giving clear context for when the tool can be used. It does not explicitly exclude alternatives but implies use for retrieval of a single business rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_catalog_itemARead-onlyIdempotent
Get full details of a catalog item including its variables
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | Catalog item sys_id or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint. The description adds that variables are included, which is useful context beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and resource, no unnecessary words. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description hints at what is returned ('full details including variables'), which is mostly sufficient. Could specify more fields, but contextually adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add much. The description does not provide additional meaning beyond the schema's description of 'sys_id_or_name'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'catalog item', with the specific detail 'including its variables'. This distinguishes it from generic get_record or other get_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings like list_catalog_items or get_record. Usage is implied by the name and description, but no when-not or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_change_requestARead-onlyIdempotent
Get full details of a change request by number (CHG...) or sys_id
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Change number (CHG...) or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description carries a lower burden. It adds 'full details' context but does not elaborate on response structure or edge cases, which is acceptable given the safety annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 18 words, front-loaded with the verb and resource. It contains no wasted words and efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with a single parameter and no output schema, the description is adequately complete. Annotations cover safety and existence concerns. Optional mention of return format would improve completeness, but it is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a description for the parameter. The tool description adds no additional meaning beyond what the schema already provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'full details of a change request', specifying the identifier format (CHG... or sys_id). It effectively distinguishes this tool from sibling tools like get_incident or get_problem.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you have a change request number or sys_id) but does not explicitly mention when not to use it or provide alternatives. However, the name and context are sufficient for an agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_changesetARead-onlyIdempotent
Get details of an update set (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | Update set sys_id or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds important context beyond annotations: requires SCRIPTING_ENABLED=true. Annotations already indicate read-only, idempotent, open world.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, directly communicates purpose and key requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and a critical prerequisite. Could mention what 'details' includes, but not essential given tool simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and describes the parameter sufficiently. Tool description adds no additional meaning for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get details of an update set', specifying verb and resource. Distinguishes from siblings like list_changesets and get_current_update_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions a prerequisite (SCRIPTING_ENABLED=true) but does not provide explicit when-to-use vs alternatives or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_client_scriptARead-onlyIdempotent
Get full details and script body of a client script (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the client script |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. The description adds the return content ('full details and script body') and the prerequisite, which is beyond the annotations. It could mention that the script body might be large, but overall it's good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action, and includes the requirement in parentheses. No extraneous information; every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description says 'full details and script body', which is somewhat complete but not exhaustive. It could mention typical fields returned or that it returns a single object. Considering the tool's simplicity and the context, it's adequate but not highly informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (sys_id is described as 'System ID of the client script'), so baseline is 3. The description does not add additional semantic meaning to this parameter beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves 'full details and script body' of a client script, with the verb 'Get' and specific resource. It distinguishes from sibling tools like 'list_client_scripts' and 'update_client_scripts' by implying it returns full details including the script body. The prerequisite is also noted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions a prerequisite ('requires SCRIPTING_ENABLED=true'), which provides context for when to use it. However, it lacks explicit guidance on when not to use this tool versus alternatives like listing or updating scripts, though the purpose is clear from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cmdb_ciBRead-onlyIdempotent
Get complete information about a specific configuration item
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Optional comma-separated fields | |
| ci_sys_id | Yes | System ID of the CI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description only says 'get complete information,' which aligns with these hints but adds no additional behavioral context beyond what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no extraneous information. However, it is very brief and could benefit from including usage guidelines without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with only 2 parameters, the description is minimal but covers the core purpose. It does not explain what 'complete information' means, any return value limits, or error scenarios, which are not critical but would increase completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description does not add any extra semantic detail about how to use the parameters (e.g., format of fields string) beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'Get' and the resource 'complete information about a specific configuration item', clearly distinguishing it from sibling tools like search_cmdb_ci (which searches) and cmdb_health_dashboard (dashboard).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as search_cmdb_ci for searching or other 'get' tools. It does not specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_compliance_controlARead-onlyIdempotent
Get full details of a single Compliance Control by sys_id or number (e.g. "CTRL0020012").
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Control number (CTRLxxxxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so safety and repeatability are covered. The description adds the accepted identifier format with an example, but says nothing about not-found behavior or what 'full details' entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the identifier expectation and example are included without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with a fully documented schema, the definition is adequate. However, there is no output schema, and 'full details' is vague about what fields are returned, so an agent cannot anticipate the response shape or a not-found outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; the schema already explains that number_or_sysid accepts a CTRLxxxxxxx number or a 32-char sys_id. The description restates this and adds a concrete example ('CTRL0020012'), which is marginal extra value beyond the schema, matching the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get full details of a single Compliance Control') and the 'single' qualifier distinguishes it from the sibling list_compliance_controls. It does not explicitly name the sibling or contrast with it, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'single Compliance Control' implies this is the detail lookup used after a list call, but there is no explicit when-to-use, when-not-to-use, or named alternative. Usage must be inferred from the wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_compliance_policyARead-onlyIdempotent
Get full details of a single Compliance Policy by sys_id or number (e.g. "POL0010200").
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Policy number (POLxxxxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety and side-effect profile is covered. The phrase 'full details' adds a modest signal that this returns the complete record rather than a summary, but nothing about field breadth, missing-record behavior, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Slight redundancy with the schema's identifier documentation, but nothing wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A one-parameter read tool with full schema coverage and complete annotations; the description's 'full details' compensates adequately for the absence of an output schema. Only minor gaps remain (not-found handling, whether related controls/exceptions are included).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already documents both accepted identifier forms ('POLxxxxxxx' or 32-char sys_id). The description's example duplicates that, so it adds no meaning beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get full details of a single Compliance Policy') and the word 'single' distinguishes it from the sibling list_compliance_policies without naming it explicitly. An agent can identify the operation, though sibling routing is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'single ... by sys_id or number' — the agent infers this is for fetching one known policy rather than browsing. No explicit when-to-use/when-not guidance or named alternatives (list_compliance_policies, update_compliance_policy) are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_control_objectiveBRead-onlyIdempotent
Get full details of a single Control Objective by sys_id.
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | 32-char sys_id of the Control Objective |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety and repeatability profile is covered. The description contributes only the word 'full,' implying the complete record rather than a partial projection; it adds nothing about error behavior for a missing sys_id or about what 'full details' encompasses. With annotations carrying most of the load, a 3 fits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the verb and lookup key front-loaded and no filler. It is efficient, though it is terse enough that a little more guidance would have been worth the extra clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read with no output schema, the description covers the essentials: what it returns and how to identify the record. It stops short of describing the shape of 'full details' or failure modes, which leaves the agent with a minimally viable picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents sys_id as a '32-char sys_id of the Control Objective.' The description adds no format, sourcing, or validation guidance beyond that, so the schema does all the work and the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (a single Control Objective) with the lookup key (sys_id), so the operation is unambiguous. It does not, however, distinguish itself from the sibling list_control_objectives, so an agent must infer that this one returns a single record while that one returns a collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'a single' implies this is the follow-up to list_control_objectives, but nothing explicitly says when to use this instead of the list tool or what happens if the sys_id is unknown. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_csm_accountARead-onlyIdempotent
Get details of a customer account including contacts and open cases count
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_sysid | Yes | Account name or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety and idempotency are covered. The description adds that contacts and open cases count are included, but does not disclose other behaviors like what happens if the account is not found or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the key action and resource, containing no unnecessary words. It is concise and effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should clarify the return value. It mentions 'details... including contacts and open cases count', which gives some context but is vague about what other fields are returned. For a simple get operation, this is nearly complete, but could be more explicit about the response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'name_or_sysid' is fully described in the schema with 'Account name or sys_id'. The description does not add any further meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action 'Get' and the resource 'customer account' with additional details 'including contacts and open cases count', which distinguishes it from sibling tools like get_csm_case or list_csm_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but does not provide guidance on when to use it vs alternatives (e.g., list_csm_accounts for multiple accounts or get_csm_contact for contacts). No exclusions or when-not-to-use are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_csm_caseARead-onlyIdempotent
Get full details of a CSM case by number (e.g. CS0001234) or sys_id
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Case number (CS...) or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint. The description adds 'full details' but does not specify what that entails or mention any other behavioral traits beyond what annotations state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff. Could include brief context on output but is efficient for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple read with one required parameter and no output schema, the description is adequate. It tells the user what input is needed and implies output is full details, though 'full details' is vague.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already describes the parameter as 'Case number (CS...) or sys_id'. The description's mention of the parameter adds no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action (Get) and resource (full details of a CSM case) and identifiers (number like CS0001234 or sys_id), distinguishing it from sibling get_* tools that target different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing full details of a specific CSM case, but lacks explicit when-not-to-use guidance or alternatives. No differentiation from generic get_record or search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_csm_case_slaARead-onlyIdempotent
Get SLA details and remaining time for a CSM case
| Name | Required | Description | Default |
|---|---|---|---|
| case_sysid | Yes | sys_id of the CSM case |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint true, idempotentHint true, openWorldHint true. Description adds no extra behavioral info beyond consistency with read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no fluff, front-loaded with verb and resource. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool (1 param, no output schema). Description covers purpose adequately. Could mention returned fields (e.g., breach time), but minimal viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter described. Description does not add meaning beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get SLA details and remaining time for a CSM case', specifying verb, resource, and context. It distinguishes from siblings like 'get_csm_case' (case details) and 'get_sla_details' (generic SLA).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description but no explicit guidance on when to use this vs alternatives. No when-not or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_csm_contactARead-onlyIdempotent
Get details of a customer contact (name, account, phone, email)
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_sysid | Yes | Contact name, email, or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds that the tool returns details like name, account, phone, email, but does not elaborate on behavioral traits or implications of open world hint. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose with no unnecessary words. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema) and rich annotations, the description adequately covers purpose and output fields. However, it could mention that the contact can be identified by name, email, or sys_id, but that is already in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the single parameter 'name_or_sysid'. The tool description does not add any additional meaning beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'customer contact', and lists specific fields (name, account, phone, email). It distinguishes from sibling 'list_csm_contacts' which retrieves multiple contacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool vs alternatives like 'list_csm_contacts' or 'get_csm_case'. Usage is implied for retrieving a single contact's details, but no exclusions or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_instanceARead-onlyIdempotent
Get the currently active ServiceNow instance name and URL
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and side effects. The description adds that it returns instance name and URL, which is useful context. With rich annotations, the added value is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the purpose without any fluff. Every word earns its place, with clear subject, verb, and object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description adequately covers the functionality: it retrieves the currently active instance's name and URL. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100%. The description does not need to add parameter details. Baseline for 0 parameters is 4, and no extra info is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get), the resource (currently active ServiceNow instance), and the output (name and URL). It is specific and distinguishes from sibling tools that retrieve other entities or list multiple instances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (getting current active instance) but does not explicitly discuss when to use this tool versus alternatives like list_instances or switch_instance. Basic guidance is present but no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_update_setARead-onlyIdempotent
Get the currently active Update Set for the session
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint=true. The description adds no behavioral context beyond 'currently active'. It does not mention what happens if no update set is active (e.g., returns null or default). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no wasted words. Perfectly concise for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and trivial input, the description covers the basic purpose but lacks detail on the return value (e.g., update set record or null). Could be more complete with a hint about the response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters. With schema description coverage at 100% (since no params exist), and zero parameters, the baseline is 4. The description does not need to add parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the currently active Update Set for the session. The verb 'get' and resource 'currently active Update Set' are specific. It distinguishes from siblings like list_update_sets (which lists all) and switch_update_set (which changes the active one).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. However, the purpose is self-evident; it's implied to use when you need the current active update set. No exclusions or when-not provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_data_management_policyCRead-onlyIdempotent
Get a Data Management Policy and the archive rules for its table.
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds real value by disclosing that the response is composite (policy plus its table's archive rules), but says nothing about what happens if no archive rules exist, or about permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity is a byproduct of under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameter documentation, the description should carry more weight. It states roughly what comes back but leaves the identifier semantics, failure behavior, and policy concept undefined, which is thin for a detail-retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter, sys_id, with 0% schema description coverage, so the description must compensate and does not. It never explains that sys_id is the policy's system identifier or what format it takes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('Get') plus a specific resource ('Data Management Policy') and an explicit statement that archive rules for the associated table come back with it. This partially separates it from list_data_management_policies and list_archive_rules, but it never names those siblings or states that it is the single-record counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this instead of list_data_management_policies or list_archive_rules, and no prerequisites or required identifiers mentioned. The composite nature of the return hints at the use case, but the agent must infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deploymentARead-onlyIdempotent
Get details and status of a specific deployment
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Deployment sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds no behavioral context beyond what annotations provide, such as response structure or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no waste, front-loaded with the core purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and adequate annotations, the description is mostly complete. However, it could briefly mention common return fields (e.g., status, details) since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, describing the sys_id parameter. The description does not add semantic detail beyond schema, meeting baseline expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get details and status of a specific deployment' clearly states the action (get) and the resource (deployment), distinguishing it from siblings like list_deployments or track_deployment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The name implies it is for a single deployment, but no when-not-to or alternative hints are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_devops_insightsARead-onlyIdempotent
Get deployment frequency, failure rate, and lead time metrics for a pipeline
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to analyse (default 30) | |
| pipeline_sys_id | No | Pipeline sys_id (optional — all pipelines if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds value by specifying the metrics returned and implying that omitting pipeline_sys_id returns all pipelines. This provides behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence, front-loaded with the action and metrics list. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only metrics tool with good annotations and schema, the description is adequate. It could be improved by noting the return format (e.g., JSON structure), but the current level suffices given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters described). The description adds minimal new meaning: it reinforces optionality of pipeline_sys_id and default for days, but does not significantly extend beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves deployment frequency, failure rate, and lead time metrics for a pipeline. This distinguishes it from sibling tools like get_devops_pipeline (which likely returns pipeline details) and get_deployment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining DevOps metrics but does not explicitly state when to use vs alternatives or provide exclusion criteria. While the context is clear, there is no guidance on when not to use or mention of related tools like get_devops_pipeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_devops_pipelineARead-onlyIdempotent
Get details of a specific DevOps pipeline
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Pipeline sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, indicating a safe, idempotent read operation. The description adds no behavioral details beyond the annotations, such as authorization requirements or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential purpose without extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no nested objects), the description is complete enough for an agent to understand its function and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes the single parameter 'sys_id' with a clear description. The description adds no additional meaning beyond the schema, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'DevOps pipeline', indicating it retrieves details. It distinguishes from sibling tools like 'list_devops_pipelines' which return multiple pipelines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving details of a specific pipeline, but does not explicitly state when to use it versus alternatives or provide exclusions. Usage is implied by the verb and resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_discovery_runBRead-onlyIdempotent
Get one Discovery run by sys_id or number (DIS...), including full status fields
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | discovery_status sys_id or number (e.g. "DIS0001001") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety and repeatability are covered. The phrase 'including full status fields' adds a small hint about the payload's richness, but nothing about what happens on an unknown sys_id or DIS number, and there is no output schema to lean on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the verb and identifier forms front-loaded and no filler. 'Including full status fields' is slightly loose phrasing but does add a hint about the returned content, so every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-record read with full schema coverage and read-only annotations, this is close to sufficient. It is still silent on how the tool relates to list_discovery_runs and on failure behavior for a bad identifier, leaving small but real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents both accepted identifier forms with an example. The description merely repeats that ('by sys_id or number (DIS...)') without adding format rules, fallback behavior, or constraints, so it is baseline-adequate only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('one Discovery run') plus the identifier formats accepted, which is more than the bare name conveys. It does not distinguish itself from the sibling list_discovery_runs, so an agent must infer that this is the single-record counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: needing one run's full detail. There is no explicit 'use list_discovery_runs to enumerate' guidance despite that sibling existing in the tool set, and no note on prerequisites for looking up a run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_logARead-onlyIdempotent
Get full details of an email log entry including body and headers
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Email log sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint. The description adds valuable context about the content included (body and headers), going beyond what annotations provide. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words, effectively conveying the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter, no output schema, and full annotations, the description sufficiently explains what the tool does and what it returns. Could mention that it retrieves a single record, but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the parameter 'sys_id' described as 'Email log sys_id'. The description adds no further meaning beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'email log entry', and specifies the scope 'including body and headers'. It distinguishes the tool from sibling list tools like 'list_email_logs'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving full details of a single email log entry but does not explicitly provide guidance on when to use this tool versus alternatives like list_email_logs 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.
get_event_registry_entryARead-onlyIdempotent
Get details of a specific registered event definition
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_sysid | Yes | Event name (e.g. "incident.created") or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and idempotency. The description adds minimal context, only stating it gets details, with no additional behavioral traits like error handling or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with one parameter, full schema coverage, and comprehensive annotations, the description is mostly complete. It could briefly mention that it returns a definition object, but the absence of output schema makes this less critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter is fully described there. The tool description adds no parameter information beyond the schema, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get details of a specific registered event definition' uses a specific verb ('Get') and resource ('registered event definition'), clearly distinguishing it from siblings like 'list_event_registry' and 'register_event'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'list_event_registry' or 'register_event'. The description simply states the function without context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_finding_grouping_statusARead-onlyIdempotent
Diagnose why a Vulnerable Item is (not) grouped into a Remediation Task. Returns the VI's grouping preconditions (vulnerability and cmdb_ci references, is_in_group), its m2m links with each task's auto_vi_refresh, the active remediation task rules (sn_sec_rem_task_rule), and an ordered diagnosis: empty vulnerability → no active rule → rule/condition mismatch or auto_vi_refresh=false on the existing task.
| Name | Required | Description | Default |
|---|---|---|---|
| vulnerable_item | Yes | Vulnerable Item: VIT number (VITxxxxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare readOnlyHint, idempotentHint, and openWorldHint, the description adds substantial behavioral detail: it lists the exact grouping preconditions, m2m auto_vi_refresh links, active remediation task rules, and the ordered diagnosis path. With no output schema, this return-value disclosure is especially valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the diagnostic purpose, then efficiently enumerates returned data and the ordered diagnosis chain. It contains no filler and every clause adds useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, one-parameter diagnostic tool with no output schema, the description is largely complete: it explains what is inspected and how the diagnosis is sequenced. It could be slightly stronger by mentioning how this relates to sibling tools such as add_vi_to_remediation_task, but the core behavior is well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully described in the schema, including the VIT number and 32-character sys_id format. The description does not add syntax or filtering semantics beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific diagnostic verb and resource: diagnosing why a Vulnerable Item is or is not grouped into a Remediation Task. It clearly distinguishes this from nearby siblings like add_vi_to_remediation_task or get_remediation_task, which perform actions or fetch tasks rather than diagnose grouping logic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening sentence gives clear context for when to use it: to diagnose VI-to-Remediation-Task grouping problems. It does not explicitly name alternatives such as get_vulnerable_item or list_remediation_tasks, so it falls short of full when-to-use/when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flowARead-onlyIdempotent
Get full details of a Flow Designer flow including its actions and trigger
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_sysid | Yes | Flow name or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent. The description adds that it returns actions and trigger, providing useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key purpose, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient for a simple get-details tool with one required parameter. No output schema, but the description hints at the structure (actions, trigger).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter. The description does not add further meaning or examples beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves full details of a Flow Designer flow including actions and trigger, distinguishing it from sibling tools like list_flows or trigger_flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_flow_execution, list_flows). The agent must infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flow_error_logARead-onlyIdempotent
Get detailed error logs for failed flow executions
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look-back period in days (default 7) | |
| limit | No | Max records (default 25) | |
| flow_sys_id | Yes | Flow sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true. The description adds that logs are for 'failed flow executions', which is useful but not extensive. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, direct and without fluff. All words are meaningful and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but given the simplicity (3 params, read-only), the description is adequate but could mention what fields are in the error logs (e.g., error message, timestamp). Lacks completeness for a new user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all three parameters with descriptions (100% coverage). The tool description adds no extra meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'detailed error logs for failed flow executions', which distinguishes it from sibling tools like 'get_flow' and 'get_flow_execution'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'get_flow_execution' for general execution details or 'list_flow_executions' for listing. No explicit when-not or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flow_executionARead-onlyIdempotent
Get the status and details of a specific flow execution
| Name | Required | Description | Default |
|---|---|---|---|
| execution_sysid | Yes | sys_id of the flow execution to inspect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, so the agent knows the behavior. The description adds 'status and details', which is consistent and doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single clear sentence with no unnecessary words. Efficiently conveys the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with one parameter and comprehensive annotations, the description is sufficient. However, lacks details about the return format (no output schema), but 'status and details' is moderately descriptive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for 'execution_sysid'. The description adds no extra meaning beyond what the schema already provides, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'status and details of a specific flow execution', distinguishing it from sibling tools like 'list_flow_executions' (list) and 'get_flow' (flow definition).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'list_flow_executions' or 'get_flow'. The name is self-explanatory, but lacks direct comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_grc_audit_dashboardARead-onlyIdempotent
Summarize the Audit Management posture: Engagement counts by state, Control Test counts by design/operation effectiveness, and the highest-priority-issue open engagements.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | How many top open engagements to include (default: 5, max: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety and volatility profile is known. The description adds the summarized content categories but does not state data freshness, aggregation scope, or whether counts are across all engagements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single efficient sentence with the main purpose front-loaded and the three aggregated dimensions clearly enumerated. There is no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, single-parameter dashboard tool with an output schema absent, the description gives enough detail about the categories included. It could clarify aggregation scope or freshness, but it is otherwise sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already documents the 'top' parameter, including its default and maximum. The description implies that 'top' relates to highest-priority-issue open engagements, adding some semantic context, but it does not add format or ordering details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb and resource ('Summarize the Audit Management posture') and enumerates the three content dimensions. It is distinguishable from list-style siblings because it says it summarizes counts and top open engagements rather than listing records, though it does not explicitly name the alternative tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: call this for an audit posture overview. There is no explicit when-to-use or when-not-to-use guidance, and it does not mention alternatives such as list_audit_engagements or list_audit_control_tests for detailed records.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_grc_compliance_dashboardARead-onlyIdempotent
Summarize the Compliance posture: Policy/Control/Issue counts by state, and the highest-risk open Policy Exceptions.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | How many top exceptions to include (default: 5, max: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation as read-only, idempotent, and open-world. The description adds useful context about what is summarized (counts by state, top open exceptions) but does not describe return format, aggregation scope, or pagination/limits beyond the schema-documented top parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It immediately states the tool's purpose and lists the key content areas, earning every word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only dashboard tool with one optional parameter and no output schema, the description adequately conveys the summary content. It lacks details on how 'state' is defined or the exact response structure, but the high-level return contents are clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single 'top' parameter, including default and maximum. The description mentions 'highest-risk open Policy Exceptions' but does not add further semantics about the parameter beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Summarize') and resource ('Compliance posture') and lists the exact content: Policy/Control/Issue counts by state and top open Policy Exceptions. It is clear what the tool does, but it does not explicitly distinguish itself from sibling dashboard tools such as get_grc_risk_dashboard or get_grc_audit_dashboard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Summarize' and 'dashboard' – an agent can infer this is a high-level overview rather than a detail listing like list_policy_exceptions. However, there is no explicit when-to-use, when-not-to-use, or named alternative to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_grc_entityARead-onlyIdempotent
Get full details of a single GRC Entity by sys_id.
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | 32-char sys_id of the Entity |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety and repeatability profile is covered. The description adds 'full details,' which suggests a complete record rather than a summary, but it says nothing about field coverage, missing-record behavior, or permissions — modest added value on top of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, scoping the operation and naming the key input immediately. It is efficiently sized, though the terseness leaves no room for routing or return-value context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool whose annotations already cover safety, this is close to adequate, but there is no output schema and 'full details' does not say what the record contains or how errors on an invalid sys_id surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists, and the schema documents it fully as a '32-char sys_id of the Entity' at 100% coverage. The description repeats the identifier but adds no format or lookup guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (GRC Entity) with explicit singular scope ('a single'), which implicitly separates it from list_grc_entities. It does not name sibling tools directly, so a reader must infer the boundaries from the singular/plural contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: fetch one entity when you already have its sys_id. There is no explicit statement of when to prefer this over list_grc_entities or query_records, and no prerequisites or failure conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_grc_indicatorARead-onlyIdempotent
Get full details of a single GRC Indicator by sys_id or number (e.g. "IND0020021").
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Indicator number (INDxxxxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety and idempotency profile is covered. The description adds that it returns 'full details' but does not describe output contents, missing-record behavior, or any scoping constraints, which is acceptable but minimal given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant or wasted wording. It conveys purpose and identifier scope efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-record getter with one fully documented parameter and read-only/idempotent annotations, the description is largely complete. The only real gap is that 'full details' is not elaborated and there is no output schema, so return-field expectations remain somewhat vague.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter is already documented as an indicator number (INDxxxxxxx) or 32-character sys_id. The description adds an example value but no additional syntax or lookup behavior beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get full details of a single GRC Indicator') and distinguishes the single-record scope from sibling list/create/update tools. It also names the accepted lookup keys (sys_id or number), so an agent can immediately tell what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool by saying it retrieves a single indicator by identifier or number. However, it does not explicitly say when to use it instead of list_grc_indicators, get_grc_indicator_dashboard, or list_indicator_results, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_grc_indicator_dashboardARead-onlyIdempotent
Summarize Indicator posture: counts by category and by last-result pass/fail.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds real value beyond that by disclosing the shape of what comes back (counts by category and pass/fail breakdown), which matters since there is no output schema. It stops short of stating scope (all indicators vs. scoped) or freshness of the data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource and the output composition front-loaded. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-argument dashboard tool with annotations and no output schema, the description supplies enough: what is aggregated and along which dimensions. The remaining gap is scope/filters and whether the counts cover all indicators, which an agent might want before trusting the numbers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4 under the rubric. There is no parameter syntax to mis-explain, though the description could have noted that the summary is unfiltered/global.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Summarize) and resource (Indicator posture) and specifies the aggregation produced (counts by category and by last-result pass/fail). It is distinguishable from the sibling dashboards (get_grc_compliance_dashboard, get_grc_risk_dashboard, get_grc_audit_dashboard) by content, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: a summarizing/dashboard tool with no parameters naturally reads as an overview entry point. There is no explicit when-to-use, when-not-to-use, or pointer to list_grc_indicators / get_grc_indicator for detail-level queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_grc_issueARead-onlyIdempotent
Get full details of a single GRC Issue by sys_id or number (e.g. "IPT0011010").
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Issue number (IPTxxxxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only the accepted identifier formats, and says nothing about what 'full details' comprises, error behavior for unknown sys_ids, or result size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the key noun, scope and identifier example. No filler, nothing an agent must skip past.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-record fetch with a fully documented one-param schema and no output schema, the definition is near-sufficient. The remaining gap is that 'full details' is undefined, so the agent cannot anticipate which fields or how large a payload it receives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter is required with a documented format, so the schema does the heavy lifting. The description's example ('IPT0011010') mildly reinforces the schema's 'IPTxxxxxxx' pattern but adds no new constraint or validation detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (a single GRC Issue) plus the identifier forms, which clearly separates it from list_grc_issues and update_grc_issue. It never names those siblings explicitly, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'single' implies this is the retrieval path when you already have an identifier, but the description gives no explicit when-to-use/when-not guidance and does not route the agent to list_grc_issues for discovery or update_grc_issue for mutation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_grc_risk_dashboardARead-onlyIdempotent
Summarize the Risk posture: Risk counts by state, and the highest-scored open risks.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | How many top risks to include (default: 5, max: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only, idempotent, open-world behavior, so the description only needs to add contextual behavior. It does so by stating that results include counts by state and highest-scored open risks, though it leaves some ambiguity about whether counts cover all risks or only open risks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It immediately communicates the tool's summary nature and the contents returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple dashboard tool with one optional parameter and no output schema, the description adequately explains the high-level return content. It could be slightly more complete about whether all risk states are counted or only open risks, and how many results the `top` parameter controls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single `top` parameter is fully documented in the schema with a default and maximum, giving a baseline of 3. The description implies a top-N list of open risks but adds no parameter-specific meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Summarize') and resource ('Risk posture') and names the two main outputs: risk counts by state and highest-scored open risks. It is clear, but it does not explicitly distinguish itself from sibling tools such as list_risks or the other GRC dashboards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by 'Summarize the Risk posture,' suggesting a high-level dashboard overview rather than detailed record access. However, it gives no explicit when-to-use guidance, exclusions, or named alternatives like list_risks or get_risk.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_groupARead-onlyIdempotent
Find assignment group details by name or sys_id
| Name | Required | Description | Default |
|---|---|---|---|
| group_identifier | Yes | Group name or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the tool as read-only, idempotent, and open-world. The description aligns with these but adds no additional behavioral context beyond what annotations already provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the verb and resource, with no unnecessary words. Every part serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple structure (one required param, no output schema) and annotations that clarify safety, the description is mostly complete. It could mention return type or behavior on no match, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, and the description does not add extra meaning beyond the schema's parameter description. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Find', the resource 'assignment group details', and the method 'by name or sys_id'. It effectively distinguishes from sibling tools like 'list_groups' and 'create_group'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (retrieving group details) but does not provide explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_group_slaARead-onlyIdempotent
Get both SLA views for a task-based Vulnerability Group (sn_vul_vulnerability) by VUL number or sys_id: the built-in TTR status (target date, breach, days remaining) AND any attached task_sla instances (definition, stage, breached, percentage, time left). Use this for groups; VI/RT (which are not task-based) use get_remediation_sla.
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Group number (VULxxxxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered without the description. The description adds real value by disclosing what the two SLA views contain (target date, breach, days remaining; definition, stage, breached, percentage, time left) and the entity-type restriction. It does not cover edge cases such as what happens when no task_sla is attached, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the tool's identity and the return contents before the routing note. Dense but every clause carries information; the parenthetical field lists are slightly heavy but justified by the absent output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields for both SLA views, and it scopes applicability to task-based groups. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully documented in the schema (100% coverage) and the description only restates that it accepts a VUL number or sys_id. Baseline 3 is appropriate because the schema does all the work and no additional format or validation detail is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get both SLA views for a task-based Vulnerability Group') and enumerates the two views (built-in TTR status plus attached task_sla instances). It also names the sibling it must not be confused with, so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing guidance: 'Use this for groups; VI/RT (which are not task-based) use get_remediation_sla.' This gives both the when-to-use and the when-to-use-something-else condition, with the alternative tool named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hr_caseARead-onlyIdempotent
Get full details of an HR case by number (e.g. HRCS0001234) or sys_id
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | HR case number (HRCS...) or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint. The description adds no additional behavioral context (e.g., permissions, rate limits, or what 'full details' entails) beyond stating it retrieves details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description is clear for a simple retrieval, it lacks information about the return structure (e.g., what fields are included in 'full details'). Given no output schema, the description could be more explicit about the response content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage, but the description adds a concrete example (HRCS0001234) that clarifies the expected format, providing value beyond the schema's parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves full details of an HR case by number or sys_id, with an example format (HRCS0001234). It is specific and distinguishes from sibling tools like create/update/close/list HR case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have an HR case number and need details, but it does not explicitly differentiate from related tools like get_hr_case_activity or get_hr_lifecycle_events, nor does it provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hr_case_activityARead-onlyIdempotent
Get the full activity log and journal entries for an HR case
| Name | Required | Description | Default |
|---|---|---|---|
| hr_case_sysid | Yes | sys_id of the HR case |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description's addition of 'full activity log and journal entries' adds minimal behavioral context. No further disclosure about authentication, rate limits, or scope beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. Every word is necessary and directly communicates the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter, no output schema, and clear annotations, the description adequately conveys the purpose and scope. A slightly richer description of what constitutes 'activity log' would raise it to a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a clear description for the single parameter hr_case_sysid. The tool description adds no additional meaning beyond 'sys_id of the HR case', so it aligns with the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'the full activity log and journal entries for an HR case', which is a specific verb and resource. It is easily distinguishable from siblings like get_hr_case (which likely gets the case) and list_hr_cases (which lists cases).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any explicit guidance on when to use this tool versus alternatives like get_hr_case or get_hr_lifecycle_events. Usage context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hr_lifecycle_eventsARead-onlyIdempotent
Get HR lifecycle events for an employee (promotions, transfers, leaves)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| event_type | No | Filter by type: promotion, transfer, leave, onboarding, offboarding | |
| employee_sys_id | Yes | Employee user sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds that the tool retrieves lifecycle events, which is consistent with read-only behavior. However, it does not disclose any additional behavioral traits such as pagination, date ranges, or error handling. The description adds minimal value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that captures the tool's purpose and examples. It is concise without unnecessary words. However, it could be slightly more structured (e.g., bullet points), but it is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple read-only tool with good annotations and full schema documentation, the description is adequate. It explains the resource and provides event type examples. However, it lacks information about the return format, pagination, or any limitations. Given the absence of an output schema, some return expectations would be helpful. Overall, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters (employee_sys_id, event_type, limit) have descriptions in the input schema (100% coverage). The tool description does not add any additional semantic context beyond what the schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get) and the resource (HR lifecycle events for an employee) and lists example event types (promotions, transfers, leaves). It distinguishes this tool from generic get/list tools by specifying the HR lifecycle context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. There is no mention of prerequisites, limitations, or comparison to similar tools (e.g., get_hr_profile, list_hr_cases).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hr_profileARead-onlyIdempotent
Get the HR profile for a user (employment details, department, manager)
| Name | Required | Description | Default |
|---|---|---|---|
| user_identifier | Yes | Username, email, or sys_id of the user |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true. The description adds that the profile includes employment details, department, and manager, providing some context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action, no wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description adequately explains purpose and return content. Minor improvement: could mention that it returns a single profile object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of 'user_identifier' (Username, email, or sys_id). The tool description does not add any additional meaning beyond the schema, hence baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Get) and resource (HR profile), and specifies the content (employment details, department, manager). It distinguishes this tool from siblings like 'get_user' or 'get_hr_case'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like 'update_hr_profile' or 'get_user'. No mention of context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hr_serviceARead-onlyIdempotent
Get details of a specific HR service including its tasks and SLAs
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | HR service sys_id or exact name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with the readOnlyHint annotation but adds minimal new behavioral context beyond noting that tasks and SLAs are included. Annotations already indicate safety, so the description adds some value but not much.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the verb and resource, with no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema) and annotations covering safety, the description provides sufficient context for selecting and invoking the tool. It could briefly mention the response format, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description is clear. The tool description adds context about what details are returned, but does not enhance parameter semantics beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'HR service', and specifies that it returns 'details including its tasks and SLAs', which distinguishes it from sibling tools like 'list_hr_services' that list services without detailed info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for retrieving a single HR service by identifier, but does not explicitly state when to use it versus alternatives like 'list_hr_services' or provide when-not scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_import_setARead-onlyIdempotent
Get details of a specific Import Set including row count and transform status
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Import Set sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds that it returns row count and transform status, but does not disclose additional behavioral traits beyond what annotations provide. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 14-word sentence that is front-loaded with the action and contains no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with annotations and no output schema, the description is mostly complete, specifying included details (row count, transform status). It could list more attributes, but is sufficient given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter 'sys_id' described as 'Import Set sys_id'. The description adds no extra meaning beyond the schema, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'Import Set', and specifies included details (row count and transform status), distinguishing it from sibling tools like 'list_import_sets' (list) and 'get_record' (generic).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving details of a specific import set, but does not explicitly state when to use it versus alternatives like 'list_import_sets' or 'get_transform_map', nor does it provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incidentARead-onlyIdempotent
Get full details of an incident by number (e.g. INC0012345) or sys_id
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Incident number (INC...) or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds that it returns 'full details' but does not disclose any additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the purpose. Every word is useful and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (one parameter) and the presence of annotations, the description is sufficient for this read-only retrieval tool. It could mention the return format but is adequate as-is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds context about the parameter format (e.g., INC0012345) which is not in the schema's description. This provides additional meaning for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'incident', and the input format (by number or sys_id). It distinguishes itself from other get_* tools by being specific to incidents and requiring either a number or sys_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool over alternatives like get_record or other incident-specific tools. No when-to-use or when-not-to-use information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indicator_resultARead-onlyIdempotent
Get full details of a single Indicator Result by sys_id.
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | 32-char sys_id of the Indicator Result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, open-world retrieval operation. The description adds that it returns 'full details,' but does not describe error behavior, permissions, or what 'full details' includes; with annotation coverage, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It states the action, scope, and access key immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with complete schema coverage and read-only annotations, the definition is nearly sufficient. It could briefly clarify what 'full details' returns, but no output schema exists and the core invocation requirement is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single sys_id parameter is already documented as a 32-character identifier. The description adds no format or validation details beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Get) and resource (Indicator Result) and scopes it to a single record by sys_id. It distinguishes itself implicitly from list_indicator_results by saying 'single', though it does not explicitly name the sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: retrieve one indicator result when you have its sys_id. There is no explicit guidance on when to use this versus list_indicator_results or dashboard tools, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instance_diagnosticsARead-onlyIdempotent
Get live instance performance diagnostics: JVM memory, semaphore pools (concurrency/queue depth), and cluster node status — the data behind the Performance homepage (/stats.do)
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | xmlstats.do sections to fetch (default ['memory','semaphores']). Other useful values: 'transactions', 'connections', 'dbpool', 'servlet' | |
| raw_xml | No | Return the raw xmlstats.do XML instead of the parsed summary (default false) | |
| all_nodes | No | Fetch diagnostics for every cluster node via sys_cluster_node_stats instead of only the node serving this request — use on multi-node production instances (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds that data is live and mirrors the Performance homepage, but does not disclose cost, call frequency, or what happens on multi-node clusters beyond the schema's all_nodes flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler, front-loading the resource and contents, then the concrete backing endpoint. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of telling the agent what comes back, and it does so by naming the three data categories and the underlying XML source. It stops short of describing return shape or pagination, but for a read-only diagnostics call it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter (include, raw_xml, all_nodes) carries a descriptive schema string with defaults and value examples. The description adds no parameter detail, so the baseline of 3 is appropriate since the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (live instance performance diagnostics) and enumerates the data it returns: JVM memory, semaphore pools, cluster node status. It also anchors the tool to a known surface (/stats.do Performance homepage), which helps distinguish it from siblings, though it never names the adjacent tools like get_mid_server_health or get_performance_analytics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'live' framing and the /stats.do reference imply this is a real-time troubleshooting read, but there is no explicit when-to-use or when-not-to-use guidance, and no alternatives are named. An agent must infer that this is for current-state diagnostics rather than historical metrics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integration_healthARead-onlyIdempotent
Report the health of Vulnerability Response data integration runs (sn_vul_integration_run) over a recent window. Surfaces failed runs and — critically — silent stalls where no runs occurred at all (e.g. an NVD/Qualys feed quietly failing with 503/429). Returns success/failure counts, the most recent success and failure timestamps, recent run details, and actionable alerts.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look back this many days (default: 7, max: 365) | |
| source | No | Filter to a single integration source, e.g. "NVD", "Qualys", "Tenable" (default: all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent, and the description adds genuinely non-obvious behavior: it explicitly detects zero-run stalls and 503/429 upstream failures, and enumerates the returned signals (counts, last success/failure timestamps, run details, alerts). It does not discuss permission requirements or how the 'recent window' interacts with the days parameter, leaving a small gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no filler: purpose first, the differentiating silent-stall capability second, the return payload last. Every clause carries information the agent cannot get from schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields and alerts, and it explains the failure modes it catches. An agent can decide whether to call it and interpret the result without further information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents defaults and the 365-day cap, so the baseline is 3. The description adds value by framing the window semantically ('over a recent window') and by naming NVD/Qualys feeds, which concretely illustrates what the source filter selects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Report the health of Vulnerability Response data integration runs') and pins the underlying table (sn_vul_integration_run), so the agent knows it is an aggregate health view rather than a raw run listing. It stops short of naming the ambiguous siblings (list_integration_runs, get_integration_run, list_integration_logs), so the differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear usage context: it is a recent-window health snapshot whose distinguishing value is catching silent stalls where no runs occurred. That implicitly selects it over raw run-listing tools, but no when-not condition or named alternative (e.g. list_integration_runs for raw history) is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integration_runARead-onlyIdempotent
Get full detail of a single Vulnerability Integration Run by run number (VINTRUNxxxx) or sys_id, including performance metrics and any fatal_error_message.
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Run number (VINTRUNxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds what the payload includes (performance metrics, fatal_error_message), which is useful, but says nothing about behavior on an unknown/invalid identifier or the volume of data returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, then the identifier forms and return highlights. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in to note the notable return fields (performance metrics, fatal_error_message). It is nearly complete for a simple single-record read; only error/not-found behavior and the relationship to log-fetching tools are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents both accepted formats, so the description adds no syntax or constraint beyond the schema. Baseline 3 applies when the schema carries the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (get) plus resource (a single Vulnerability Integration Run) and the acceptable identifier forms (VINTRUNxxxx or sys_id). Sibling differentiation is implicit via 'single' contrasted with list_integration_runs, but no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent must already know it needs one run's detail and has an identifier. No explicit when-to-use, prerequisites, or pointer to list_integration_runs/list_integration_logs as alternatives when the identifier is unknown or logs are wanted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_knowledge_articleARead-onlyIdempotent
Get the full content of a knowledge article by number (KB...) or sys_id
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Article number (KB...) or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description aligns by stating 'Get the full content'. It adds the context of returning full content and identification method, which is useful but does not go beyond what annotations provide. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 14 words, front-loaded with the action and essential details. Every word contributes to clarity with no unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (single parameter, no output schema, annotations covering safety), the description is sufficient for an agent to understand its purpose and usage. It could be enriched with mention of any access restrictions or return format, but for a retrieval tool, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the parameter 'number_or_sysid' described as 'Article number (KB...) or sys_id'. The description rephrases this without adding additional meaning, so it meets the baseline expectation of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'knowledge article', and the identification method by number or sys_id. It distinguishes this retrieval tool from sibling tools like search_knowledge, update_knowledge_article, and create_knowledge_article, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to identify the article but does not provide explicit guidance on when to use this tool versus alternatives. While the context implies that this is for retrieving full content, it lacks exclusions or comparisons to similar tools such as search_knowledge for searching or get_record for generic retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_license_complianceARead-onlyIdempotent
Get license compliance summary — purchased vs. installed vs. in use counts
| Name | Required | Description | Default |
|---|---|---|---|
| license_sys_id | No | Software license sys_id (optional — omit for all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds the key behavioral trait of returning three specific counts but doesn't elaborate on additional behaviors like pagination or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no unnecessary words. Front-loads the core action and output structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description explains the output shape sufficiently. It lacks mention of aggregation level (per license or overall) but is adequate for low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter. The tool description adds no further parameter-specific details beyond what the schema provides, but the output context (purchased vs installed vs in use) gives overall meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a license compliance summary with specific metrics (purchased vs. installed vs. in use counts). It distinguishes itself from siblings like 'get_license_optimization' by focusing on compliance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies it's for license compliance summaries but does not provide when-not-to-use or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_license_optimizationBRead-onlyIdempotent
Analyze software license usage and recommend optimizations
| Name | Required | Description | Default |
|---|---|---|---|
| software_name | No | Optional filter by software name | |
| threshold_pct | No | Usage threshold percentage (default: 80) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint, indicating safe read behavior. The description adds that it 'recommends optimizations', which is useful but doesn't disclose whether it modifies data (though annotations confirm read-only). No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded. However, it could include more details like output format without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and description does not explain return values. For a tool that generates recommendations, the output format is crucial but missing. Complexity is low but completeness is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear parameter descriptions. The tool description adds no additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs 'analyze' and 'recommend' targeting 'software license usage'. It distinguishes from siblings like get_license_compliance and list_software_licenses by focusing on optimization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Siblings like get_license_compliance and list_software_licenses exist but no explicit when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_license_position_summaryARead-onlyIdempotent
Aggregate license-compliance dashboard: over-licensed vs. under-licensed counts, total potential savings, total true-up cost
| Name | Required | Description | Default |
|---|---|---|---|
| publisher | No | Optional filter by publisher name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds useful context about what is aggregated, but it does not explain data freshness, whether the publisher filter affects all aggregates, or what the summary is based on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact line with the resource named first and the returned metrics listed immediately after. Every phrase carries information and there is no wasted prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only aggregate tool with complete parameter documentation and no output schema, the description gives enough detail about the returned metrics. It could go slightly further by clarifying how the optional publisher filter scopes the aggregates, but the core context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one optional parameter and schema description coverage is 100%, so the schema already documents the publisher filter fully. The description adds no additional parameter meaning or filtering semantics, which is acceptable given the complete schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (a license-compliance dashboard) and enumerates the specific aggregates it returns: over/under-licensed counts, savings, and true-up cost. It does not explicitly distinguish this tool from nearby siblings such as get_license_compliance or get_license_optimization, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The dashboard framing implies this is for summary-level license positioning rather than detailed license records, but it never says when to choose it over list_license_positions, get_license_compliance, or get_license_optimization. Usage is inferable but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mid_server_healthARead-onlyIdempotent
MID Server health summary — status, version, last refresh, open issues, extension contexts (web server / ACC listener), and output-queue backlog sample
| Name | Required | Description | Default |
|---|---|---|---|
| mid_server | Yes | MID Server name or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. Beyond those, the description usefully discloses that the result is an aggregated health summary and that the output-queue portion is only a "backlog sample," which is meaningful behavioral nuance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the core purpose, then lists the returned health facets. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields. It is complete enough for a read-only health-summary tool, though it could clarify issue scope or sample size for the queue backlog.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is documented as "MID Server name or sys_id." The description adds no parameter-specific meaning beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: "MID Server health summary" for a named MID Server, and enumerates the health aspects it covers (status, version, refresh, issues, extension contexts, queue backlog). This clearly distinguishes it from list-oriented siblings such as list_mid_servers and list_mid_server_issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by "health summary" for a single MID Server, but the description gives no explicit when-to-use guidance, prerequisites, or named alternatives for drilling into issues, contexts, or queue details via sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mobile_analyticsARead-onlyIdempotent
UNSUPPORTED: no validated mobile session telemetry source is configured. Returns an error rather than invented usage counts.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Analysis period in days (default 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover safety (readOnly/idempotent/openWorld); the description adds the critical behavioral fact that the call fails rather than returning invented numbers. This is exactly the kind of disclosure an agent needs to avoid trusting phantom data, and nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the decisive 'UNSUPPORTED' status front-loaded. Every word earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stub tool with no output schema, the description fully explains why no data is returned and what the caller gets instead. Complete enough to prevent misuse, though it could note whether the error is unconditional.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single 'days' parameter fully described in the schema. The description adds no parameter-specific meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states plainly that the tool is unsupported and returns an error instead of fabricated counts. The verb/resource ('get mobile analytics') is implicit in the name, and the description makes the actual behavior unmistakable, though it doesn't explicitly contrast with sibling tools like get_mobile_app_config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It signals strongly that this tool should not be relied on for real data ('returns an error'), which is useful usage guidance. However, it doesn't direct the agent to any alternative source or say under what conditions the tool would become usable, leaving the 'what to do instead' question open.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mobile_app_configARead-onlyIdempotent
Get details of a specific mobile app configuration
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | sys_sg_mobile_application sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds little beyond confirming it is a read operation and does not explain error behavior or the shape of the returned configuration details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no wasted words. It states the action and target immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with full schema coverage and helpful annotations, the description is complete enough to select and invoke it. It could be slightly stronger by explicitly pointing to the list tool for discovering sys_id values, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the sole parameter's meaning is documented as a sys_sg_mobile_application sys_id. The description adds no extra syntax, source, or format guidance beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Get') and resource ('mobile app configuration') and specifies 'a specific' one, distinguishing it implicitly from list_mobile_app_configs. It does not explicitly name the sibling, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'a specific' implies retrieval by sys_id rather than enumeration, so the usage is inferable. However, it does not explicitly say when to use this versus list_mobile_app_configs or where to obtain the required sys_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ms_copilot_topicsARead-onlyIdempotent
List VA topics exposed to Microsoft Copilot 365 via Custom Engine Agent integration
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, openWorldHint) already cover safety and idempotency. Description adds context about the data source but no further behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, focused sentence with no unnecessary words, effectively communicating the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple list tool with one optional parameter. Could describe output fields but not essential given the specific scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the limit parameter. Description provides no additional meaning beyond the schema's 'Max results (default: 20)'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists VA topics exposed to Microsoft Copilot 365 via Custom Engine Agent integration, distinguishing it from siblings like list_va_topics_full.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for topics exposed to Copilot but provides no explicit guidance on when to use this vs alternatives like list_va_topics_full.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_approvalsARead-onlyIdempotent
List approvals pending for the currently configured user
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Filter by approval state (default: requested) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and open-world. The description adds behavioral context: it returns only pending approvals (state=requested) for the configured user, which is beyond annotation declarations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no extraneous words. It conveys the essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description adequately covers the basic functionality. However, it could mention that the result is a list or include additional details about the return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage on the only parameter 'state'. The description does not add any additional meaning or constraints beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'approvals', and the scope 'pending for the currently configured user'. It effectively distinguishes from sibling tools like 'list_approvals' and 'approve_request' by specifying the user context and pending state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly guides when to use the tool (for pending approvals of the configured user) but does not explicitly contrast with alternatives like 'list_approvals' or 'approve_request'. The context is clear, but exclusions or when-not-to-use are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notificationARead-onlyIdempotent
Get full details of an email notification definition including template and conditions
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | Notification sys_id or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, openWorldHint. Description adds context about return content (template, conditions) but no additional behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is clear, direct, and front-loaded with purpose. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description adequately communicates that full details including template and conditions are returned. Sufficient for a simple read tool with thorough annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; description adds no meaning beyond what schema provides for the single parameter. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Get', resource 'email notification definition', and included details ('template and conditions'). Distinct from siblings like list_notifications and update_notification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when full details are needed, but does not explicitly mention when to use versus alternatives like list_notifications for summaries or update_notification for modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nvd_entry_by_cveARead-onlyIdempotent
Look up a single NVD entry by exact CVE id (e.g. "CVE-2018-1002203").
| Name | Required | Description | Default |
|---|---|---|---|
| cve | Yes | Exact CVE id, e.g. "CVE-2018-1002203" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is fully covered. The description adds only the exact-match constraint and does not disclose failure behavior (error vs. null) for a missing CVE, or whether the record is cached/stale. With annotations doing the heavy lifting, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and target, with an inline example that earns its place by pinning the id format. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only lookup with full schema coverage, the definition is nearly sufficient. The only gap is return-shape expectation, since no output schema exists and the description says nothing about what an NVD entry contains or how misses are surfaced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'cve' parameter is already documented with the same example format. The description's example duplicates the schema rather than extending it (e.g., no note on accepted casing or whether CVSS/CPE data is fetched). Baseline 3 for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Look up'), specific resource ('a single NVD entry'), and a scoping qualifier ('by exact CVE id') with a concrete example. The 'single' phrasing implicitly separates it from the sibling list_nvd_entries, but the sibling is never named, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'exact' signals this is a precision lookup, which implies list_nvd_entries is the tool for browsing or partial matching, but the description never states when to use one over the other or what happens if the id is invalid/unknown. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pa_dashboardARead-onlyIdempotent
Get details of a PA dashboard including its widgets/tabs
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | Dashboard sys_id or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds minimal behavioral context beyond stating the operation type ('Get'). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 10 words, front-loading the essential purpose. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool simplicity (one parameter, annotations present, no output schema), the description is mostly complete. It hints at the response content ('including its widgets/tabs') but could be slightly more explicit about response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description ('sys_id_or_name'). The description adds no additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('PA dashboard') and clarifies the scope ('details including its widgets/tabs'). It clearly distinguishes from sibling tools like list_pa_dashboards (list vs. get) and get_pa_indicator (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool when you need details of a specific PA dashboard. It does not explicitly state when not to use it or name alternatives, but the purpose is clear enough for selecting among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pa_indicatorARead-onlyIdempotent
Get details of a specific Performance Analytics indicator including its formula
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | Indicator sys_id or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true. The description complements these by specifying that it returns 'details...including its formula', adding useful context beyond the annotations. There is no contradiction and no missing behavioral disclosure for this simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-formed sentence that front-loads the verb and resource. It contains no fluff, every word earns its place, and it is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with one required parameter, read-only annotations, and no output schema, the description covers the essential functionality and return content (formula details). It is complete and leaves no ambiguity about what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single parameter 'sys_id_or_name', which the schema already explains. The description does not add extra meaning or usage hints about the parameter beyond what the schema provides, so it meets the baseline but does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and identifies the exact resource ('details of a specific Performance Analytics indicator') including a notable sub-aspect ('its formula'). This clearly distinguishes it from sibling tools like list_pa_indicators, get_pa_dashboard, and get_pa_job.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool nor when to avoid it. It implies usage for fetching indicator details, but no alternatives or exclusion criteria are mentioned, which is a minor gap for a simple get tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pa_jobBRead-onlyIdempotent
Get details of a Performance Analytics collection job
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | PA job sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, which convey safety and idempotency. The description adds only the resource type 'collection job', but no additional behavioral traits beyond annotations. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 10 words, front-loaded with verb and resource. It is maximally concise with no extraneous information, earning a top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is straightforward with 1 parameter and annotations covering safety, the description is barely adequate. It lacks details on output format or error behavior, but is not critically incomplete for this simple case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with a description for sys_id. The tool description does not add any extra meaning or context about the parameter (e.g., format, source). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses 'Get details of a Performance Analytics collection job', which clearly identifies the verb and resource. It distinguishes among sibling tools like list_pa_jobs or get_pa_indicator by specifying 'collection job', but does not explicitly differentiate from other PA detail tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention that list_pa_jobs is for listing, or when not to use this tool. Explicit usage context is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pa_scorecardARead-onlyIdempotent
Get current scorecard data for a PA indicator — returns current value, target, trend direction
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Time period: last_7_days, last_30_days, last_quarter, last_year (default: last_30_days) | |
| include_scores | No | Include individual score records (default false) | |
| breakdown_sys_id | No | Optional breakdown (dimension) sys_id to segment data by group | |
| indicator_sys_id | Yes | PA indicator sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint as true. The description adds return content details (current value, target, trend direction) but does not disclose behavioral traits like error handling, authorization, or rate limits. It adds moderate context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the verb and resource. Every word serves a purpose, and it is appropriately concise with no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of annotations and a fully described schema, the description covers the core purpose and return values. However, it could be more complete by explaining how parameters like breakdown_sys_id and include_scores affect the output. Still, it is adequate for a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage for all four parameters with clear descriptions. The tool description does not add any additional meaning beyond what the schema already specifies. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'scorecard data for a PA indicator', and what it returns ('current value, target, trend direction'). This is specific and distinguishes it from siblings like get_pa_dashboard or get_pa_time_series.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving current scorecard data but does not provide explicit guidance on when to use this tool versus siblings (e.g., get_pa_time_series for historical data). No when-not-to-use or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pa_time_seriesBRead-onlyIdempotent
Get historical time-series data for a PA indicator to identify trends
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max data points to return (default 100) | |
| end_date | No | End date in YYYY-MM-DD format (default: today) | |
| start_date | No | Start date in YYYY-MM-DD format (default: 30 days ago) | |
| indicator_sys_id | Yes | PA indicator sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint as true, indicating safe, idempotent read operations. The description adds that it returns 'historical time-series data', which aligns with these annotations. However, it does not provide additional behavioral context beyond what annotations convey, so a baseline score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is efficient and front-loaded with the key action and purpose. No redundant information, and it earns its place by being direct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's purpose but does not specify the output format (e.g., data points with timestamps). Given no output schema, additional context would be helpful. However, for a simple read operation with good parameter descriptions, it is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all four parameters described adequately (e.g., default values for dates, limit). The tool description does not add additional meaning beyond the schema descriptions, so the contribution is neutral. Baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves historical time-series data for a PA indicator, with the purpose of identifying trends. This distinguishes it from sibling tools like get_pa_indicator (returns indicator definition) and list_pa_indicators (lists indicators). The verb 'Get' is specific and the resource is clearly defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use it, or other tools that might be more appropriate (e.g., get_pa_indicator for non-time-series data). The context is only implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_performance_analyticsBRead-onlyIdempotent
Get Performance Analytics widget data (requires PA plugin; latest release: /api/now/pa/widget/{sys_id})
| Name | Required | Description | Default |
|---|---|---|---|
| time_range | No | Time range (e.g., "last_30_days", "last_quarter") | |
| widget_sys_id | Yes | sys_id of the PA widget |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, indicating safe, read-only behavior. The description adds the plugin requirement and API URL, which is useful but does not provide additional behavioral details beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys purpose, a critical requirement, and an API reference. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two parameters, no output schema) and strong annotations, the description covers the key points: purpose, prerequisite, and API endpoint. It does not specify return format or pagination, but those are often assumed for read-only get tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters (widget_sys_id and time_range). The tool description does not add any parameter-specific information, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'Performance Analytics widget data', specifying the verb and resource. It also notes the plugin requirement and provides the API endpoint. However, it does not differentiate from sibling PA tools like get_pa_dashboard or get_pa_indicator, which target different PA entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite (PA plugin) but gives no guidance on when to use this tool versus other PA get tools or how to decide if it's appropriate. No explicit context for use or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_performance_historyARead-onlyIdempotent
Get historical transaction performance as a time series (transaction count, avg/max response time, SQL time, business rule time per bucket) from the transaction log — chartable data for instance performance trends, replacing the legacy Performance dashboard graphs
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Look-back window in hours (default 24, max 168) | |
| query | No | Extra encoded query to filter transactions, e.g. "urlLIKE/api/" for REST only or "sys_created_by=admin" | |
| buckets | No | Number of time buckets (default 24, max 48) | |
| group_by_node | No | Break each bucket down per cluster node (system_id) — use to spot a slow node on multi-node production instances (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/ idempotent/openWorld, so the safety profile is covered. The description adds real value with what the payload contains (per-bucket counts and timing breakdowns) and where it comes from, which matters since there is no output schema. It doesn't cover limits like the max look-back or bucket caps in prose, but those live in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that is front-loaded with verb and resource, followed by the returned metrics and then the use case. No filler, no restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, no-output-schema tool with fully described parameters, the description supplies the missing return-content context and the purpose framing. It's complete enough to call correctly; only minor cues (relation to the other performance-related siblings) are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter has its own description (defaults, maxes, examples), so the description adds little parameter-specific detail beyond the 'per bucket' framing. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get historical transaction performance as a time series) and enumerates the exact metrics returned (transaction count, avg/max response time, SQL time, business rule time per bucket). The source (transaction log) and the 'replacing legacy Performance dashboard graphs' note let an agent tell it apart from siblings like get_performance_analytics or trend_query without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Frames the intended use ('chartable data for instance performance trends') and disambiguates via 'replacing the legacy Performance dashboard graphs'. It stops short of naming siblings such as get_performance_analytics or trend_query and saying when to prefer them, so no explicit exclusions are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pi_modelsARead-onlyIdempotent
List available Predictive Intelligence solutions (classification/similarity models)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, indicating safe, consistent, and potentially incomplete results. The description adds no additional behavioral context (e.g., caching, authorization requirements). While it does not contradict annotations, it adds minimal value beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no unnecessary words. It is front-loaded with the action and resource, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple list operation with good annotations. The description lacks details about return format (e.g., what fields are returned), but given the straightforward nature and presence of annotations, it is mostly complete. Minor gap for an agent expecting a full overview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no parameters, and input schema coverage is 100% (empty schema). The description does not need to add parameter details. Baseline 4 applies since no parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('List') and resource ('available Predictive Intelligence solutions'), clarifying the tool focuses on classification/similarity models. This clearly differentiates it from numerous sibling 'list_*' tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies it's for listing PI models, but does not specify when not to use it or mention alternative tools for model management, which could help an agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_policy_exceptionBRead-onlyIdempotent
Get full details of a single Policy Exception by sys_id or number (e.g. "PER0000106").
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Exception number (PERxxxxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered, but the description adds no behavioral context of its own: nothing about behavior on a missing/invalid record, what fields constitute "full details", or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the verb and resource first and zero filler. It is efficient, though the brevity leaves "full details" undefined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial single-parameter getter with annotations and no output schema, the description is minimally adequate but does not hint at what the returned record contains or how the two identifier formats are resolved, leaving the agent to discover the response shape by calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents both accepted formats (PERxxxxxxx or 32-char sys_id). The description's example "PER0000106" merely restates the schema pattern, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get full details of a single Policy Exception") and signals single-record scope, which implicitly contrasts with the sibling list_policy_exceptions. It does not name the sibling or clarify what "full details" encompasses, so it falls short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the lookup tool used after list_policy_exceptions returns an identifier, but the description never says when to use it, when not to, or what to do if the identifier is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portalARead-onlyIdempotent
Get full configuration details of a Service Portal by sys_id or URL suffix
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Portal sys_id or url_suffix (e.g. "sp", "itsm") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description carries low burden. It adds 'full configuration details' but no further behavioral traits like return size or pagination. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the essential information without waste. It is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (1 required param, no output schema) and annotations cover safety. 'Full configuration details' is somewhat vague but adequate given the domain. Lacks explicit enumeration of returned fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the parameter 'id'. The tool description repeats 'by sys_id or URL suffix' but adds no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'full configuration details of a Service Portal', and specifies identification method 'by sys_id or URL suffix'. This distinguishes it from siblings like list_portals (which lists portals) and get_portal_page (which gets a specific page).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like list_portals or get_portal_page. It only states what it does, leaving the agent to infer context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portal_pageBRead-onlyIdempotent
Get details of a specific Service Portal page including its layout
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Page sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, indicating safe, idempotent read operations. The description adds minimal behavioral context beyond stating 'Get details' and 'including its layout', but does not contradict annotations (no contradiction found).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, brief sentence that communicates the core purpose without redundancy. It is appropriately sized for a simple retrieval tool, though it could be slightly more precise by specifying what 'details' include.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description provides a hint about the return content ('including its layout'), but does not fully explain what details are included. With annotations covering safety, the description is adequate but leaves some ambiguity about the response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the single required parameter 'sys_id' described as 'Page sys_id'. The description does not add further meaning or context about the parameter, so it meets the baseline for a fully documented schema without extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as retrieving details of a specific Service Portal page, using the verb 'Get' and specifying the resource and scope ('including its layout'). This distinguishes it clearly from siblings like list_portal_pages (listing) or get_portal (portal-level details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like list_portal_pages or get_portal. The description lacks explicit context for when/not-to-use, and does not mention any prerequisites or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portal_themeARead-onlyIdempotent
Get full details of a Service Portal theme including CSS variables
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Theme sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, which cover behavioral traits. The description adds context about the output (CSS variables) but does not disclose additional behavioral aspects beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise one-sentence description that is front-loaded and contains no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description provides a good hint about the return content (full details including CSS variables). However, it could be slightly more specific about other fields returned (e.g., theme name, properties).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for sys_id. The description does not add extra meaning to the parameter beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (Get) and the resource (full details of a Service Portal theme including CSS variables). Distinguishes it from sibling tools like list_portal_themes which only list themes, and get_portal which retrieves portal, not theme.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as list_portal_themes or get_portal. The description does not mention that this tool is for retrieving details of a single theme, while list_portal_themes is for listing all themes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portal_widgetARead-onlyIdempotent
Get full source code (HTML, CSS, client/server scripts) of a Service Portal widget
| Name | Required | Description | Default |
|---|---|---|---|
| id_or_sysid | Yes | Widget sys_id or id field (e.g. "widget-cool-clock") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly and idempotent. Description adds value by specifying the exact components returned (HTML, CSS, scripts), which helps the agent understand the response content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 14 words, front-loaded with action and resource. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with one parameter and no output schema, the description adequately covers purpose and expected content. Lack of output format mention is minor given the straightforward nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description. The tool description adds no additional parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'full source code' including HTML, CSS, and scripts, distinguishing it from sibling tools like list_portal_widgets (metadata only) and create/update variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance, but the context implies use when needing full source code. No alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_problemARead-onlyIdempotent
Get full details of a problem by number (PRB...) or sys_id
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Problem number (PRB...) or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint as true, so the description does not need to repeat these. The description adds the identification method (number or sys_id) which is a useful behavioral constraint, and does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise, front-loaded, and contains no superfluous information. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter tool with one parameter and comprehensive annotations, the description is complete. It covers the purpose, identification method, and implies the return value ('full details'). No gaps are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a clear description for the single parameter. The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('problem'), and clarifies how to identify the problem (by number or sys_id). This clearly distinguishes it from sibling tools like 'get_incident' or 'get_record'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly states that the tool is used when full details of a problem are needed, based on number or sys_id. While it doesn't explicitly exclude alternatives or provide when-not-to-use, the context is clear given the tool's specific name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_process_automationCRead-onlyIdempotent
Get details of a Process Automation Designer playbook or process
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_sysid | Yes | Playbook or process internal name, display label, or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond the purpose — it does not explain what 'details' includes, how ambiguous names are resolved, or what openWorldHint implies for this lookup. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no waste. It is appropriately sized for a simple getter, though it could have used one more clause to add routing or return-value value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only getter with 100% schema coverage and useful annotations, the description is minimally adequate. However, without an output schema and without any indication of what the returned 'details' contain, it leaves a modest gap an agent might care about.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents that name_or_sysid accepts an internal name, display label, or sys_id. The description adds no additional semantics, so the baseline of 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get details of') and a specific resource ('Process Automation Designer playbook or process'). This distinguishes it from the sibling list_process_automations by implying a single-item retrieval, though it does not explicitly name that sibling or explain the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use guidance, no alternatives, and no exclusions. An agent must infer from the name that this is for fetching one playbook/process rather than listing them, but the description never says so.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_property_historyARead-onlyIdempotent
Get audit history of changes to a system property
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Property name | |
| limit | No | Max audit records (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds that it returns 'audit history of changes', clarifying the tool provides historical records rather than current state. However, it does not mention output format, ordering, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the purpose. It is concise and front-loaded, but could be slightly more informative (e.g., mentioning it returns a list of records) without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema), the description adequately conveys its function. However, it could specify that the result is a list of change records and mention the limit parameter's role in controlling response size.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no additional meaning to parameters beyond what the schema already provides. The baseline of 3 is appropriate as the description neither enhances nor detracts from parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get audit history of changes to a system property', specifying a precise verb ('Get') and resource ('audit history of changes to a system property'), which distinguishes it from siblings like get_system_property (current value) and set_system_property (mutation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., get_system_property for current value, list_system_properties for all properties). It does not mention exclusions, prerequisites, or recommended contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recordARead-onlyIdempotent
Retrieve complete details of a specific record by sys_id
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Table name | |
| fields | No | Optional comma-separated fields | |
| sys_id | Yes | 32-character system ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description adds minimal behavioral context. It mentions 'complete details' but does not elaborate on output format, pagination, or rate limits. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one phrase) and to the point. It is front-loaded with the core action. However, it could be slightly more structured, e.g., by including a sentence on the 'fields' parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and the presence of many sibling tools, the description is adequate but not comprehensive. It tells what the tool does but does not specify the return structure or any limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are fully described in the input schema (100% coverage). The description adds no additional semantics beyond 'by sys_id'. With schema coverage high, baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'retrieve' and the resource 'record by sys_id', indicating it fetches a single record. It distinguishes from sibling tools like get_incident or get_user by targeting any table via the 'table' parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies general-purpose record retrieval, it does not explicitly state when to use this tool over dedicated get_* tools (e.g., get_incident, get_user). No when-not-to-use guidance or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_remediation_slaARead-onlyIdempotent
Get the SLA (TTR) detail for a single Vulnerable Item, Remediation Task, or Vulnerability Group by number or sys_id: status, target date, applied rule, breach flag and days remaining/overdue. For task-based Vulnerability Groups, task_sla instances are also available via get_sla_details.
| Name | Required | Description | Default |
|---|---|---|---|
| record_type | Yes | Record family: vi (Vulnerable Item), rt (Remediation Task, sn_vul_remediation_task), or vg (Vulnerability Group / task-based Remediation Task, sn_vul_vulnerability) | |
| number_or_sysid | Yes | VI number / RT task_number, or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/openWorld, so the safety profile is covered. The description adds value by disclosing what the response contains — status, target date, applied rule, breach flag, days remaining/overdue — which is essential since no output schema exists. It does not mention auth scope or whether a missing SLA yields an error versus an empty result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, verb-first and front-loaded, with the record types and the returned-field list each earning their place. The first sentence is dense but not padded; the second is a genuinely useful pointer rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with annotations and no output schema, listing the returned fields closes the biggest gap. The remaining omission is disambiguation against the closely named sibling get_group_sla and what happens for records without an SLA.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, including the vi/rt/vg enum and the 'number or 32-char sys_id' format. The description merely restates 'by number or sys_id' without adding format or validation nuance, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb plus resource: 'Get the SLA (TTR) detail for a single Vulnerable Item, Remediation Task, or Vulnerability Group', with an explicit list of returned attributes. It clearly contrasts with list-type siblings like list_remediation_sla by saying 'single', but it never clarifies how it differs from get_group_sla, which appears to cover overlapping ground for the vg case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
One routing hint is given: task_sla instances for task-based Vulnerability Groups are available via get_sla_details. Beyond that there is no guidance on when to reach for this tool versus get_group_sla, list_remediation_sla, or list_active_slas, nor any prerequisite context. Usage is implied by the record types rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_remediation_taskARead-onlyIdempotent
Get full details of a single Remediation Task by sys_id or number. Looks in both backing tables: a VUL-prefixed number targets sn_vul_vulnerability (the rule-engine RT), anything else is tried as task_number on sn_vul_remediation_task first, then as number on sn_vul_vulnerability. The result includes a source_table marker.
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | RT task_number, VUL number (VULxxxxxxx), or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and open-world, so the safety profile is covered. The description adds genuinely valuable non-obvious behavior: it queries two backing tables with a defined fallback order and returns a source_table marker, which the agent could not infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the routing rules, then the return marker. Dense but every sentence carries information; the table names are a bit technical but necessary for correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers the key return signal (source_table) plus the dual-table lookup, which is enough for an agent to call it and interpret the result. Minor gap: it doesn't describe what the returned detail fields look like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by explaining the resolution semantics: a VUL-prefixed number routes to sn_vul_vulnerability while other values are tried as task_number then number. This adds real meaning about what the single parameter does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get full details of a single Remediation Task) and immediately scopes by identifier type. It is clearly distinguishable from siblings like list_remediation_tasks and get_vulnerable_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the lookup resolution order an agent must know to pick the right identifier form, which is effectively guidance on how to use it. It stops short of naming when to prefer sibling tools such as list_remediation_tasks to discover an ID first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reportARead-onlyIdempotent
Get the definition and metadata of a saved report
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | Report sys_id or exact name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description need not repeat safety traits. It adds no new behavioral details but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is concise and front-loaded with the essential action and object. No superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema, rich annotations, and lack of output schema, the description is mostly complete. It might mention that it retrieves a single report, but this is implied by the parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a clear parameter description. The tool description does not add further meaning beyond what the schema provides, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'definition and metadata of a saved report'. It differentiates from sibling tools like 'list_reports' (list) and 'create_report' (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as 'list_reports' or 'export_report_data'. The description lacks explicit usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_requestARead-onlyIdempotent
Get a service catalog request (sc_request) by number or sys_id, including its requested items
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Request number (e.g. REQ0001234) or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate that the tool is read-only, idempotent, and open-world. The description adds that it 'includes its requested items,' which provides some behavioral insight, but it does not detail how those items are returned or if there are any additional constraints, resulting in minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the essential information. Every word contributes to clarity, and there is no extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and annotation support, the description is sufficient. It states the resource and the inclusion of requested items, though it does not describe the return format in detail since no output schema is present. The missing output schema means the description could slightly benefit from more structure hints, but it remains adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the single parameter 'number_or_sysid' with an example. Since schema coverage is 100%, the description adds no new semantic information about the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('service catalog request (sc_request)'), the method ('by number or sys_id'), and the scope ('including its requested items'). It effectively distinguishes this tool from sibling tools like 'get_request_item' and 'list_requests'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for retrieving a specific request when you have its number or sys_id. It provides clear context but does not explicitly state when not to use it or mention alternatives, which keeps it from being a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_request_itemARead-onlyIdempotent
Get a requested item (sc_req_item) by number or sys_id, including its fulfillment tasks
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | RITM number (e.g. RITM0001234) or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint. Description adds value by stating that fulfillment tasks are included, which is behavioral context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no filler, front-loaded with the core action and resource. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get operation with one parameter and no output schema, the description covers the essential behavior including included data. Could mention what happens if the item is not found, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the parameter. The description does not add any additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Get', resource 'requested item (sc_req_item)', and specifies lookup methods 'by number or sys_id'. Also mentions including fulfillment tasks, which distinguishes it from other get tools like get_request or list_request_items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. The purpose is specific enough to imply usage for retrieving a single request item, but lacks context like when not to use it or what distinguishes it from similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rest_messageARead-onlyIdempotent
Get full configuration of an outbound REST Message including its endpoints
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | REST Message sys_id or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, so safety is clear. Description adds that it returns endpoints, but no additional behavioral traits like authorization needs or rate limits are disclosed. Acceptable given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no redundant words; front-loaded with the key action and result. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description adequately conveys the purpose and scope (full configuration including endpoints). It could mention error cases or parameter format, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, with a description stating it accepts sys_id or name. Description does not add extra meaning about the parameter beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves the full configuration of an outbound REST Message including its endpoints, using a specific verb and resource. This distinguishes it from sibling tools like list_rest_messages which only list messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as list_rest_messages or create_rest_message. The description does not mention when it is appropriate or not appropriate to invoke.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_riskARead-onlyIdempotent
Get full details of a single Risk by sys_id or number (e.g. "RK0020310").
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Risk number (RKxxxxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only that it returns 'full details' — no note on permissions, error behavior when an identifier is not found, or record scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the action and identifier front-loaded and zero filler. Nothing can be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only getter with a fully documented single parameter and annotations covering safety, the description is essentially complete; only a disambiguation from get_risk_statement/list_risks is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description already explains 'RKxxxxxxx or 32-char sys_id'; the description's example 'RK0020310' adds only a concrete format sample. Baseline 3 applies since the schema carries the parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get full details of a single Risk') plus the identifier forms, so an agent can tell it retrieves one risk record. It does not distinguish itself from the closely-named sibling get_risk_statement, leaving some ambiguity in a large GRC toolset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The need for a single risk's full details is implied, and list_risks is the obvious alternative for browsing, but the description never says when to use this rather than list_risks or get_risk_statement. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_risk_calculator_detailsARead-onlyIdempotent
Explain how a USEM Risk Calculator computes its score: returns the calculator group (sn_sec_calculator_group), its calculator rules, each rule’s weighted risk fields (sn_sec_calculator_risk_field), and the score→weight bands for the target table (sn_sec_calculator_risk_score_weight) in one call. Use this to answer "why is the risk score N?". Accepts a sys_id or exact calculator name.
| Name | Required | Description | Default |
|---|---|---|---|
| calculator | Yes | sys_id or exact name of the risk calculator (sn_sec_calculator_group) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and open-world behavior. The description adds useful context that it returns the calculator group, rules, weighted risk fields, and score-to-weight bands in one call, though it omits error or permission behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the returned components and the primary diagnostic use case, then states the accepted input forms. The sentences are dense but every element is useful and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description enumerates the four returned data sets and the intended diagnostic use case, which is sufficient for an agent to call it correctly. It could still clarify output shape or not-found behavior, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the sole parameter is already fully documented in the schema. The description only restates that a sys_id or exact calculator name is accepted, adding no new semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: explaining how a USEM Risk Calculator computes its score, and enumerates the returned artifacts. This clearly distinguishes it from sibling tools that retrieve a single USEM rule or list rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the use case as answering "why is the risk score N?" and notes the aggregation in one call. It does not name alternatives or exclusions, such as when to use get_usem_rule instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_risk_statementARead-onlyIdempotent
Get full details of a single Risk Statement by sys_id.
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | 32-char sys_id of the Risk Statement |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds only that it returns 'full details', without describing not-found behavior, authorization needs, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted wording. It states the action, resource, and key lookup field immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-by-id tool, the description plus annotations and complete parameter schema provide enough to invoke it correctly. Minor gaps remain around not-found handling and return structure, but no output schema is present to rely on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter is fully documented as a 32-char sys_id. The description adds little beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Get') and resource ('full details of a single Risk Statement') and constrains retrieval to a sys_id. It clearly differs from list_risk_statements by emphasizing a single record, though it does not explicitly name that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use this when you already have a Risk Statement sys_id and need its full details. It does not explicitly say when to use this versus list_risk_statements or how to obtain a sys_id if unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scheduled_jobARead-onlyIdempotent
Get full details of a scheduled job by sys_id or name
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | Job sys_id or exact name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds that it returns 'full details' but no further behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundant words, efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and clear annotations, the description is sufficient. It could optionally hint at what 'full details' includes, but not necessary given the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter description. The description simply restates 'by sys_id or name', adding no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get full details of a scheduled job' with the specific identifier methods 'sys_id or name', distinguishing it from list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies using this tool when you have a sys_id or name and need full details, but it does not explicitly mention when to use alternatives like list_scheduled_jobs or other get tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scoped_appARead-onlyIdempotent
Get full details of a scoped application by sys_id or scope name
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | App sys_id or scope name (e.g. "x_myco_myapp") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description adds little beyond 'Get full details'. No contradiction, but no extra behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundant information. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so the description could hint at what 'full details' includes. The annotations cover safety and idempotency, but the lack of explicit output information leaves some ambiguity for complex decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and includes a description for the 'id' parameter. The tool description adds an example of the scope name format, which provides marginal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'scoped application', and the identification method 'by sys_id or scope name'. This distinguishes it from sibling tools like 'list_scoped_apps' or 'create_scoped_app'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While the purpose is clear, there is no mention of when to use 'get' instead of 'list' or other retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_script_includeARead-onlyIdempotent
Get full script body of a script include (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | Script include sys_id or api_name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the critical behavioral constraint that SCRIPTING_ENABLED must be true, which is not captured by the annotations. Annotations already indicate readOnly, idempotent, and open world hints. The description does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of a single sentence that front-loads the action and includes an essential condition. Every word adds value; there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter and no output schema, the description sufficiently indicates what the tool does and its prerequisite. It does not describe the return format, but 'full script body' implies the response contains the script source. For a simple retrieval tool, this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'sys_id_or_name' is described in the schema with 'Script include sys_id or api_name'. Schema description coverage is 100%. The tool description reaffirms the parameter's purpose by stating it identifies which script include to fetch. No additional semantic details are needed beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'full script body of a script include'. It distinguishes the tool from siblings like 'list_script_includes' which lists script includes, and 'update_script_include' which modifies them, by focusing on retrieving the script body.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions a prerequisite (SCRIPTING_ENABLED=true), providing clear context for when the tool can be used. It does not explicitly state when not to use it or name alternatives, but the requirement serves as a useful guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_security_dashboardARead-onlyIdempotent
Get security posture dashboard — open incidents by severity, vulnerability counts, mean time to resolve
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look-back period in days (default 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds concrete metrics but no further behavioral details (e.g., data source, caching, response size). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that conveys the purpose and key data points. No redundant words or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one optional parameter, the description is adequate, specifying the three key metrics. However, it could be improved by mentioning if the data is real-time or cached, or what source it queries, to fully inform the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'days', with a clear description. The tool description does not add additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a security posture dashboard with specific metrics (open incidents by severity, vulnerability counts, mean time to resolve). The verb 'Get' and resource 'security dashboard' are explicit and distinct from sibling tools like cmdb_health_dashboard or get_pa_dashboard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing security posture, but lacks explicit guidance on when to use this versus other dashboard or list tools. No alternatives or exclusions are mentioned, leaving the agent to infer context from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_security_incidentARead-onlyIdempotent
Get full details of a security incident by number or sys_id
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Security incident number (SIR...) or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, openWorldHint=true, which inform the agent of safe, read-only behavior. The description adds that it returns 'full details', implying completeness. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence) with no redundant information. It front-loads the action and resource, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and comprehensive annotations, the description is sufficient. It explains what it retrieves and how to identify the incident. The absence of output schema is compensated by stating 'full details', which sets expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description does not add any parameter semantics beyond what is already in the schema ('Security incident number (SIR...) or sys_id'). It is adequate but not value-adding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'full details of a security incident', and specifies the identifier as 'number or sys_id'. It distinguishes from sibling tools like 'list_security_incidents' (which lists) and 'update_security_incident' (which modifies), and also from 'get_incident' for regular incidents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates usage for retrieving a single incident by identifier, but does not explicitly state when to use this tool over alternatives like 'list_security_incidents' or 'get_record'. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sla_detailsARead-onlyIdempotent
Get SLA breach status for a specific task or incident
| Name | Required | Description | Default |
|---|---|---|---|
| task_sys_id | Yes | System ID of the task/incident |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds minimal context about returning breach status but does not disclose additional behaviors like required permissions or what constitutes a breach.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with 10 words, front-loaded with the key action and resource. No redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and annotations covering safety, the description is mostly complete. However, with no output schema, it could briefly indicate the nature of the response (e.g., whether it returns a boolean or details).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already describes the sole parameter 'task_sys_id' as the system ID. The description adds no further meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get' and resource 'SLA breach status' for a specific task or incident, clearly distinguishing it from sibling tools like 'get_csm_case_sla' or 'list_active_slas'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (for a specific task/incident) but does not provide explicit guidance on alternatives or exclusions relative to sibling tools such as 'get_csm_case_sla' or 'list_active_slas'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_soap_messageARead-onlyIdempotent
Get full configuration of a SOAP Message including its functions/operations
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | SOAP Message sys_id or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and openWorldHint. The description adds that the tool returns full configuration including functions/operations, which provides behavioral context beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that clearly communicates the tool's purpose without any superfluous words. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the sole source for understanding the return value. It states 'full configuration including its functions/operations', which is informative but could be more precise (e.g., listing specific properties). Still adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter sys_id_or_name, with a clear description. The tool description does not add any extra meaning, format guidance, or examples beyond the schema, so it meets but does not exceed the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and clearly identifies the resource as 'full configuration of a SOAP Message including its functions/operations'. This distinguishes it from sibling tools like list_soap_messages (which lists summaries) and get_rest_message (different protocol).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use when you need the complete configuration of a SOAP message. However, it does not explicitly state when not to use it or mention alternatives (e.g., list_soap_messages for just names). This is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_software_installBRead-onlyIdempotent
Get full details of a discovered software installation
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | cmdb_sam_sw_install sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the agent knows this is a safe, repeatable read. The description adds 'full details' as a hint about return richness, but does not disclose what fields are included, whether related records are expanded, or any data-access constraints. With annotations covering the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple get tool, though it could have included one more sentence of routing guidance without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-record retrieval with full schema coverage and annotations, the definition is minimally complete. However, because there is no output schema, the description could have clarified what 'full details' entails (e.g., installed version, license metrics, discovery source) to help the agent decide whether this tool returns the needed data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single sys_id parameter is fully documented within the schema itself. The description does not add any meaning beyond what the schema provides, which is acceptable given complete coverage, but it misses a chance to clarify that sys_id comes from a discovery or software install listing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get full details') and resource ('a discovered software installation'), which is clearly distinguishable from sibling tools like list_software_installs and get_software_model. It implies retrieval of a single installation record by ID, though it does not explicitly name the sibling list tool used to obtain that ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus list_software_installs or get_software_model, nor any note on prerequisites such as first discovering the sys_id. The usage context is only implied by the tool name and parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_software_lifecycle_reportARead-onlyIdempotent
Get full lifecycle report details for one product (all phase dates, CVE breakdown, owners)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | sam_sw_product_lifecycle_report sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuine value by enumerating what the report contains (phase dates, CVE breakdown, owners), which matters since no output schema exists. It omits behavior on an invalid or missing sys_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, with the content list in a compact parenthetical. No filler and nothing repeated from structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple single-record read with annotations present and a fully documented parameter; the description's enumeration of returned fields compensates for the absent output schema. Minor gap: no mention of error behavior for a missing record.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents that it is a 'sam_sw_product_lifecycle_report sys_id'. The description's phrase 'for one product' adds only slight context and arguably blurs whether the id refers to a product or a lifecycle report record.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get full lifecycle report details') and constrains scope to 'one product', which implicitly distinguishes it from the sibling list_software_lifecycle_reports. It stops short of naming that sibling explicitly, so an agent must infer the detail-vs-list split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the singular 'one product' plus a required sys_id suggest a single-record fetch, but there is no explicit when-to-use, when-not-to-use, or named alternative such as list_software_lifecycle_reports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_software_modelARead-onlyIdempotent
Get full details of a software model (rights, consumption rules, EOL date, lifecycle stage)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | cmdb_software_product_model sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, so the safety profile is covered; the description adds genuine context by previewing the domain content of the response (rights, consumption rules, EOL date, lifecycle stage), which matters since there is no output schema. It does not say what happens when sys_id is unknown or the record is absent, which is the main remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the core payload fields in a compact parenthetical — no filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full annotation coverage and a documented parameter, this is nearly sufficient; naming the returned field groups compensates for the missing output schema. Only error/not-found behavior and the relationship to the sibling list tool are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single sys_id param is documented as the cmdb_software_product_model key. The description adds nothing about the parameter beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Get full details') plus a clear resource ('a software model'), with the notable contents enumerated (rights, consumption rules, EOL date, lifecycle stage). It is not explicitly differentiated from the nearby list_software_models / list_software_discovery_models siblings, but 'full details' vs a list is readily inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use, when-not, or alternative-naming guidance. The single-record detail form implies it follows a list call and requires a known sys_id, but the agent must infer that rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_store_app_versionsARead-onlyIdempotent
Get version history with release notes (new features / bug fixes) for a Store app from the public Store API. Release notes are not stored in any instance table — this is the only programmatic source. Use search_store_apps to find the listing_id.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max versions to return, newest first (default 5, max 20) | |
| listing_id | Yes | 32-char Store listing sys_id (from search_store_apps) | |
| include_notes | No | Include release notes text (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the bar is lower, and the description adds genuinely useful behavioral context: this hits an external public API and release notes are not persisted in instance tables, meaning no fallback source exists. It stops short of describing rate limits or failure modes for the external dependency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the capability and followed by the data-provenance caveat and the prerequisite tool. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, three fully documented params, and annotations covering safety, the description supplies the two things an agent cannot infer: the external API source and the prerequisite lookup tool. Minor gap in not noting pagination/failure behavior, but nothing blocking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the listing_id provenance note that the description repeats. No parameter-level meaning is added beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (get) + resource (version history with release notes) + scope (Store app, public Store API). The statement that release notes are not stored in any instance table and this is the only programmatic source clearly distinguishes it from record-query siblings like query_records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit prerequisite routing: 'Use search_store_apps to find the listing_id.' It does not state when NOT to use it or name a fallback, but the dependency chain is unambiguous for an agent to act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_subflowARead-onlyIdempotent
Get full details of a subflow including its inputs, outputs, and actions
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_sysid | Yes | Subflow name or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, so the agent knows it's safe. The description adds what details are retrieved but does not discuss error conditions, auth needs, or side effects beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 12 words, front-loaded with key information. No fluff, every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only retrieval tool with good annotations and a single parameter, the description is mostly complete. However, it does not mention what happens if the subflow is not found or how to handle errors, though the openWorldHint may imply graceful missing handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for the single parameter. The tool description does not add any information beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and resource 'subflow', and explicitly mentions what is included (inputs, outputs, actions). It clearly distinguishes from sibling tools like 'list_subflows' which only list subflows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention prerequisites like needing a sys_id from list_subflows, or when to prefer this over get_flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sys_logARead-onlyIdempotent
Retrieve system log entries for debugging or auditing
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max entries (default: 20) | |
| query | No | Filter (e.g., "level=error^sys_created_onONToday@javascript:gs.beginningOfToday()@javascript:gs.endOfToday()") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description adds minimal behavioral context beyond purpose. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, efficient, and front-loaded with key information. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two optional parameters and good annotations, the description is adequate. Could mention that it specifically retrieves system log entries but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters have descriptions. The description does not add extra meaning beyond what the schema provides, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'retrieve' and resource 'system log entries' with purpose 'debugging or auditing'. It is clear but does not differentiate from sibling tools like get_email_log or get_flow_error_log.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for debugging or auditing but provides no explicit guidance on when to use 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.
get_system_propertyARead-onlyIdempotent
Get a ServiceNow system property value and metadata by name
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Property name (e.g. "glide.smtp.host") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint. The description adds minimal extra behavioral context, such as what happens if the property is not found or the response structure. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no superfluous words. It is immediately understandable and front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and annotations covering safety, the description is adequate but does not specify return values or behavior when the property is missing. No output schema exists, so additional clarity would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage with a description for the 'name' parameter including an example. The description adds no new parameter information beyond 'by name', which is redundant. Baseline 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a system property value and metadata by name. It uses a specific verb ('Get') and resource ('ServiceNow system property value and metadata'), distinguishing it from siblings like 'search_system_properties' or 'list_system_properties'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a single property by exact name, but it does not explicitly state when to use this over alternatives like 'search_system_properties' or 'list_system_properties'. No guidance on 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.
get_table_record_countARead-onlyIdempotent
Get total record count for a ServiceNow table with optional filters
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional encoded query to count a subset | |
| table | Yes | Table name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint, covering safety and idempotency. Description adds that it counts with optional filters, which is consistent. No contradictions, but no additional behavioral context beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 11 words, front-loaded with key information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple read operation with annotations covering safety; schema covers both parameters. No output schema, but return type (count) is implied. Could mention return format but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. Description references 'optional filters' but adds no new semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Get', resource 'total record count for a ServiceNow table', and optional filters. Distinct from sibling tools like compare_record_counts and query_records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like query_records or run_aggregate_query. The description only states what it does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_schemaARead-onlyIdempotent
Get the structure and field information for a ServiceNow table
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Table name to inspect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description's minimal addition is acceptable. It does not elaborate on behavior beyond the annotations, but does not contradict them either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is direct and front-loaded with the core action, containing no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description adequately explains its purpose and parameter. No additional information is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description for 'table'. The tool description adds no further meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves structure and field information for a ServiceNow table, using a specific verb ('Get') and resource, distinguishing it from sibling tools that retrieve data or list records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_record or list_*. The description does not mention any prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskARead-onlyIdempotent
Get details of any task record by number or sys_id
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Task number or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint. The description adds no extra behavioral context beyond stating retrieval. With annotations covering safety, a baseline score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence of 12 words, front-loaded with verb and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter, no output schema, and annotations, the description sufficiently states what the tool does and how to identify the record. No missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with one parameter described as 'Task number or sys_id'. Description adds no additional meaning beyond the schema, meeting baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Get' and resource 'details of any task record' with identifier method 'by number or sys_id'. It clearly distinguishes from sibling getters for specific record types like get_incident, get_change_request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like get_incident, get_record, or other getters. The description does not provide context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_threat_intelligenceARead-onlyIdempotent
Query threat intelligence data — IOCs, threat actors, and campaigns
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by IOC type: ip_address, domain, file_hash, url, email | |
| limit | No | Max records to return (default 25) | |
| query | Yes | Search term (IP, domain, hash, actor name) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint. Description adds that it queries threat intelligence data but does not disclose other behaviors like pagination, rate limits, or error handling. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with a dash for listing data types. Front-loaded with action and resource. Efficient but could benefit from bullet points or additional structure for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks explanation of output format or interpretation of results. With no output schema, the description should elaborate on what the query returns (e.g., fields, count). Annotations cover safety but not completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage for all three parameters (query, type, limit). Description does not add extra meaning beyond the schema; it only lists example data types (IOCs, actors, campaigns) without linking to parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Query' and the resource 'threat intelligence data', specifying content types: IOCs, threat actors, campaigns. It distinguishes from sibling get_ tools by focusing on threat intelligence rather than a single record type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings like search_cmdb_ci or list_vulnerabilities. The description implies use for threat intelligence queries but does not provide when-not or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transform_mapARead-onlyIdempotent
Get details of a Transform Map including its field mappings
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | Transform Map sys_id or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, idempotentHint, openWorldHint. Description adds that it returns 'details including field mappings', which is useful behavioral context beyond what annotations offer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Every element contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter, rich annotations, and no output schema, the description is adequate. Could mention if details include something else, but field mappings is the key detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter description. Description does not add additional meaning for the parameter, only states what the tool returns. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets details of a Transform Map including field mappings. Uses specific verb 'Get' and resource 'Transform Map', distinguishing it from sibling list_transform_maps and generic get_record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage (when you need details of a specific transform map), but no explicit when-to-use or when-not-to-use compared to alternatives like list_transform_maps or get_record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ui_actionARead-onlyIdempotent
Get full details and script of a UI Action (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | UI Action sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, indicating a safe read operation. The description adds value by disclosing the requirement 'requires SCRIPTING_ENABLED=true', which is a behavioral constraint not covered by annotations. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys purpose and a key prerequisite without wasted words. It is highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple one-parameter getter with no output schema, the description adequately covers the core behavior (returns full details/script) and a condition (SCRIPTING_ENABLED=true). It does not need to enumerate return fields since it says 'full details'. Nearly complete for the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (the parameter 'sys_id' has a description). The tool description says 'Get full details and script of a UI Action', which implies the parameter identifies the UI Action. This adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'UI Action' with specifics ('full details and script'). It distinguishes itself from sibling tools like list_ui_actions (which lists) and update_ui_action (which modifies).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite (requires SCRIPTING_ENABLED=true), which provides some usage context. However, it does not explicitly state when to use this tool versus alternatives like list_ui_actions for listing or update_ui_action for editing, nor does it provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_uib_pageARead-onlyIdempotent
Get details of a specific UI Builder page including layout and child elements
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | UIB page sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds that the tool returns layout and child elements, but does not disclose other behavioral traits such as required permissions or rate limits. With annotations covering safety, the bar is lower, but minimal extra context is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence (14 words) that immediately conveys the verb and resource. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description tells what the tool returns (details, layout, child elements). Given the simplicity of the tool (1 param, no output schema, strong annotations), it is adequately complete. Could be improved by noting if the page must be deployed or if there are access restrictions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single parameter 'sys_id' described as 'UIB page sys_id'. The description does not add any additional meaning or constraints beyond what the schema already provides. Baseline 3 applies since coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves details of a specific UI Builder page, including layout and child elements. It uses a specific verb (Get) and resource (UI Builder page), and distinguishes it from sibling tools like list_uib_pages (which lists pages) and create/update/delete operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing details of a single page, but does not explicitly state when to use this tool versus alternatives like get_portal_page or get_record. No guidance on prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ui_policyARead-onlyIdempotent
Get full details and conditions of a UI Policy (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | UI Policy sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds a behavioral constraint (requires SCRIPTING_ENABLED=true), which provides useful context beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose and adds a key requirement. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and full schema coverage, the description is adequate. It specifies the tool returns 'full details and conditions', which is sufficient for an agent to understand the output scope. No output schema exists, but the description hints at completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (sys_id described as 'UI Policy sys_id'). The description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves full details and conditions of a UI Policy, using the specific verb 'Get' and resource 'UI Policy'. It distinguishes from sibling list_ui_policies by implying it is for a single policy's detailed view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context for when to use the tool (to get full details of a UI Policy) and explicitly mentions a prerequisite (SCRIPTING_ENABLED=true). However, it does not explicitly state when not to use or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usem_dashboardARead-onlyIdempotent
Summarize the USEM posture: Vulnerable Item counts by state, Remediation Task counts by state, and the highest-risk open Vulnerable Items. Uses the aggregate (stats) API for exact counts.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | How many top-risk VIs to include (default: 5, max: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds real behavioral context beyond that: it discloses the data source (aggregate/stats API) and that counts are exact, which matters for trusting the numbers. It also implicitly defines 'open' for the top-risk list. With no output schema, enumerating the three result components is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the payload (what the summary contains) is front-loaded ahead of the implementation note about the stats API.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-required-parameter dashboard tool with no output schema, the description covers what is returned and why the counts are trustworthy. Minor gap: it doesn't mention that the top-risk list size is controlled by the `top` param, so an agent must read the schema to discover that knob.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single `top` parameter documents its own default (5) and max (50). The description never mentions `top` at all, so it adds nothing beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Summarize') plus the exact resource ('USEM posture') and enumerates the three things returned: VI counts by state, remediation task counts by state, and top-risk open VIs. This clearly separates it from listing siblings like list_vulnerable_items or list_remediation_tasks, though it never names those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the mention of the aggregate (stats) API for 'exact counts' signals this is the overview/rollup tool rather than a record-listing tool. There is no explicit 'use this when you want a summary instead of a list' statement and no stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usem_ruleARead-onlyIdempotent
Get the full definition of a single USEM/VR rule by sys_id.
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | 32-char sys_id of the rule | |
| rule_type | Yes | Which rule family to operate on: assignment (sn_sec_wf_assign_rule), remediation_task, remediation_target (TTR/SLA targets), risk_calculator + calculator_rule + risk_field + risk_score_weight + calculator_config (risk scoring), classification + classification_rule, exception_rule + exception_config, rollup (score rollup), approval, auto_close, exclusion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered structurally. The description adds only that the full definition is returned, with nothing on error behavior for a bad or mismatched sys_id/rule_type pair.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero padding. It is efficient, though very terse for a 16-value enum keying behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with two fully documented parameters and read-only annotations, the description plus schema cover what an agent needs. The absence of an output schema means the return shape ('full definition') is only loosely characterized.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the rule_type enum already enumerates every family with its underlying table. The description adds no format, validation, or pairing semantics beyond what the schema states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (retrieve a single USEM/VR rule) keyed by sys_id, and the word 'single' implicitly contrasts with list_usem_rules. It does not explicitly name the sibling alternatives, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers you fetch a rule after discovering its sys_id, and that mutation cases belong to update_usem_rule/set_usem_rule_active. No explicit when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userBRead-onlyIdempotent
Look up user details by email or username
| Name | Required | Description | Default |
|---|---|---|---|
| user_identifier | Yes | Email address or username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint. The description adds no additional behavioral context beyond what annotations convey, so it meets the baseline but offers no extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise (one sentence, 8 words). Front-loaded with the core action. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with one parameter and good annotations, the description is sufficient. It does not describe the return format, but the tool's simplicity makes it acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description repeats the same information ('by email or username') that is already in the parameter description. No additional meaning is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Look up user details by email or username' clearly specifies the verb (look up) and resource (user details). It distinguishes from many other get_* tools by mentioning the lookup method, but does not explicitly differentiate from siblings like get_record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. There is no mention of context, exclusions, or related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ux_appARead-onlyIdempotent
Get configuration details of a Next Experience application
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id_or_name | Yes | App sys_id or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the description does not need to restate safety. It adds minimal behavioral context beyond stating it gets 'configuration details'. No contradictions are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of 8 words, front-loading the action and resource. No filler or redundant information; every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema) and the presence of comprehensive annotations, the description is adequate but not thorough. It lacks context on when to prefer this over siblings and does not elaborate on the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for the only parameter 'sys_id_or_name'. The description does not add any additional meaning or context beyond what the schema provides, so it meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Get' and the resource 'configuration details of a Next Experience application', making the tool's purpose unambiguous. It distinguishes itself from sibling tools like 'list_ux_apps' (which lists multiple apps) and 'get_scoped_app' (a different category).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_ux_apps' or 'get_scoped_app'. There is no mention of prerequisites, context, or exclusions, which is a significant gap given the large number of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_va_conversationARead-onlyIdempotent
Get conversation history for a Virtual Agent session
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max messages (default 50) | |
| conversation_id | Yes | Conversation sys_id or session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, indicating safe, idempotent read behavior. The description adds no additional behavioral context (e.g., auth needs, rate limits, or side effects) beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence that efficiently conveys the tool's function. No wasted words, front-loads the core idea.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, extensive annotations), the description is largely complete. However, it could mention return format or pagination behavior, though the limit parameter implies partial results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add any extra meaning to parameters; it simply restates the tool's purpose without explaining parameter usage beyond what the schema already defines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool's purpose: 'Get conversation history for a Virtual Agent session'. It uses a specific verb ('Get') and resource ('conversation history'), distinguishing it from siblings like 'list_va_conversations' which lists conversations rather than retrieving history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool over alternatives. While it's implied that this tool retrieves history for a specific conversation versus listing all conversations, the description does not state when to choose this tool over similar ones like 'get_va_topic' or 'list_va_conversations'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_va_topicBRead-onlyIdempotent
Get Virtual Agent topic details including intent and trigger phrases
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Topic sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is clear. The description adds that the tool returns 'intent and trigger phrases', which is useful behavioral context, but does not elaborate on other possible fields or limitations. With annotations covering the core safety aspects, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence of 10 words that front-loads the verb. It is efficient and to the point, though it could potentially benefit from slightly more structure or detail. Still, it earns its place with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description partially compensates by mentioning 'intent and trigger phrases'. However, it does not fully describe the return format or place the tool in the broader Virtual Agent context. For a simple read-only tool, this is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter sys_id, which is described as 'Topic sys_id'. The description does not add any additional semantics beyond the schema. Baseline 3 is correct since the schema already documents the parameter adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves Virtual Agent topic details including intent and trigger phrases. It distinguishes from sibling tools like list_va_topics_full (which lists topics) and get_va_conversation (which gets conversation details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or when not to use it. Sibling tools like get_va_conversation or list_va_topics_full exist but are not referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_virtual_agent_topicsBRead-onlyIdempotent
List Virtual Agent topics available in the instance (latest release: streaming VA API)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| active | No | Filter to active topics only | |
| category | No | Filter by topic category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is clear. The description adds that it lists topics and references 'streaming VA API', but does not elaborate on behaviors like pagination, error handling, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the core purpose. It could potentially include a bit more context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool, full schema coverage, and comprehensive annotations, the description is adequate. The lack of output schema is acceptable as the description need not explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add any additional meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Virtual Agent topics and mentions 'streaming VA API' for context. However, it does not differentiate from the sibling tool 'list_va_topics_full', which appears to serve a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'list_va_topics_full' or 'get_va_topic'. The description lacks context about prerequisite conditions or appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vulnerabilityARead-onlyIdempotent
Get details of a specific vulnerability entry including CVSS score and affected CIs
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Vulnerability number (VIT...) or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, covering safety and idempotency. Description adds that CVSS score and affected CIs are included, but no additional behavioral traits beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, direct and to the point. No filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one parameter and no output schema, the description provides a clear overview of what is returned (CVSS score and affected CIs). However, it does not mention that the response is a full record or other fields, but this is acceptable given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description: 'Vulnerability number (VIT...) or sys_id'. Description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'get', resource 'vulnerability entry', and specifies included details (CVSS score and affected CIs). Clearly distinguishes from sibling tools like list_vulnerabilities and update_vulnerability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The description implies use for fetching a single vulnerability by identifier, but does not compare to siblings like list_vulnerabilities or scan_vulnerabilities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vulnerability_groupBRead-onlyIdempotent
Get full details of a single Vulnerability Group by sys_id or VUL number (e.g. "VUL0000103").
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | Group number (VULxxxxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds nothing further — it never says what 'full details' comprises, whether related findings/CIs are included, or what happens if the identifier is unknown or malformed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the identifier and example are packed into the same clause as the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one well-documented parameter and no output schema, the definition is serviceable but thin — 'full details' is left unexpanded, and for a read of a vulnerability record an agent would benefit from knowing the shape of the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents both accepted forms (VULxxxxxxx or 32-char sys_id). The description's example 'VUL0000103' is illustrative but largely redundant with the schema text, so it lands at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (Vulnerability Group) with single-record scope, and names the accepted identifiers. It is clear enough to separate from list_vulnerability_groups, though it never explicitly names that sibling or its create/update counterparts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: fetch one record when you already know its VUL number or sys_id. There is no explicit guidance on when to prefer this over list_vulnerability_groups or update_vulnerability_group, and no preconditions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vulnerable_itemBRead-onlyIdempotent
Get full details of a single Vulnerable Item by sys_id or VI number (e.g. "VIT0010003").
| Name | Required | Description | Default |
|---|---|---|---|
| number_or_sysid | Yes | VI number (VITxxxxxxx) or 32-char sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds no behavioral context beyond what the annotations and schema provide—no mention of not-found behavior, response completeness, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the key resource and identifier formats front-loaded. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-record read with full schema coverage and annotations, the description gives enough to call the tool correctly. It could add a note about return shape or error behavior, but this is a minor gap for a straightforward getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter is fully documented in the schema. The description repeats the accepted formats and adds an example ('VIT0010003'), but this does not materially exceed the schema's own description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get full details of a single Vulnerable Item') and clarifies the lookup key. It distinguishes itself from list_vulnerable_items by emphasizing 'single', though it does not explicitly name the sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus list_vulnerable_items or other vulnerability retrieval tools. The only implied usage is that you need either a sys_id or VI number, which is minimal context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspaceBRead-onlyIdempotent
Get a legacy Agent Workspace definition and up to 50 of its sys_aw_list configurations
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Workspace sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint, openWorldHint, and idempotentHint. The description adds useful context that the workspace is 'legacy' and that up to 50 sys_aw_list configurations are returned, but it does not explain truncation/pagination behavior or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no redundant phrasing. Every part contributes to identifying the tool's scope and return contents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read operation with rich annotations and full schema coverage, the description is largely complete: it states the main return content and the 50-item cap. Only edge-case behavior around truncation or missing sys_id is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the sole parameter is documented as 'Workspace sys_id'. The description does not add format, constraints, or lookup behavior beyond what the schema already provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: getting a legacy Agent Workspace definition plus up to 50 sys_aw_list configurations. It is clear what is retrieved, though it does not explicitly contrast with sibling tools such as list_workspaces or create_workspace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like list_workspaces. The retrieval-by-sys_id usage is implied by the verb and parameter, but no exclusions or selection criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_cmdb_dataB
Import CI data into CMDB CI classes using a safe field allowlist. [CMDB Write]
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Array of records to import | |
| table | Yes | Target CMDB table (e.g. cmdb_ci_server) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-idempotent, non-destructive, open-world behavior. The description adds useful context with 'safe field allowlist' and the '[CMDB Write]' tag, but it does not explain upsert semantics, duplicate handling, error behavior, or batch limits for a bulk write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely compact and front-loaded: one core sentence plus a clear write-operation tag. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a bulk CMDB write operation with no output schema, the description is too sparse. It does not explain return behavior, whether existing CIs are updated or skipped, how the allowlist constrains input, or what errors/permissions may be involved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both required parameters are documented in the input schema with clear meanings. The description adds no further detail about the table or data record structure beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: importing CI data into CMDB CI classes. The 'safe field allowlist' phrase adds scope, but the description does not explicitly distinguish this from related import tools such as import_excel_to_import_set or create_import_set_row.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes what the tool does but gives no guidance on when to use it instead of sibling import/CMDB tools. There are no prerequisites, exclusions, or alternative selections mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_excel_to_import_setA
Upload and parse one .xlsx worksheet, create an Import Set, insert its staging rows, and optionally request a Transform Map run (transform start is not verified). Requires WRITE_ENABLED=true. The original workbook is attached to the Import Set for auditability; formulas and sys_* columns are rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | Yes | Original .xlsx file name | |
| sheet_name | No | Optional worksheet name (default: first worksheet) | |
| staging_table | Yes | Existing Import Set staging table (must extend sys_import_set_row) to receive parsed rows | |
| column_mapping | No | Optional mapping of Excel header to staging-table column, e.g. { "CVE": "u_cve" } | |
| content_base64 | Yes | Base64-encoded .xlsx content (maximum 10 MiB compressed; ZIP expansion limits apply) | |
| import_set_label | No | Optional Import Set label | |
| transform_map_sys_id | No | Optional Transform Map sys_id; a run is requested after rows are inserted (transform start is not verified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly=false, openWorld=true, idempotent=false): discloses that the original workbook is retained for auditability, that formulas and sys_* columns are rejected, that transform start is not verified, and the WRITE_ENABLED gate. These are exactly the side-effect and constraint details an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded, leading with the multi-step action and following with constraints. Every sentence carries meaning, though the run of caveats is packed tightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-param, nested-object write tool with no output schema, it covers prerequisites, side effects, and validation restrictions well. It doesn't describe the returned Import Set handle/result, which would help the agent chain follow-up calls, but overall it's sufficient to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the 'transform start is not verified' caveat and the .xlsx restriction but adds little parameter-level detail beyond what the schema already documents (sheet_name default, column_mapping example, 10 MiB limit).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs and resources (upload/parse .xlsx, create Import Set, insert staging rows, optionally request Transform Map run), and this compound workflow is clearly distinguishable from siblings like import_cmdb_data, create_import_set_row, and run_transform_map.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides the key prerequisite 'Requires WRITE_ENABLED=true' and clarifies transform start is unverified, but it never states when to use this versus import_cmdb_data or create_import_set_row, nor any exclusions. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_propertiesA
Import (create or update) system properties from a JSON object. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, show what would be changed without writing (default false) | |
| properties | Yes | Key-value map of property names to values (e.g. {"glide.smtp.host": "smtp.example.com"}) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a write operation (readOnlyHint: false) and the description adds the meaningful 'create or update' (upsert) behavior. However, no additional context is provided about side effects, permissions, rate limits, or other behavioral traits beyond what annotations and schema already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently communicates the action and resource. Every word contributes; the [Write] marker is redundant but harmless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema, the description does not explain expected return values or error behavior. It does mention create/update, but lacks context about batch semantics, the effect of dry_run, or potential failure modes, making it adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full coverage (100%) with verbose descriptions for both parameters, including dry_run's purpose and an example for properties. The description adds no extra parameter semantics beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Import' with the resource 'system properties' and mechanism 'from a JSON object', clearly distinguishing it from retrieval, deletion, or single-property tools. The explicit mention of 'create or update' specifies the upsert nature of the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus similar siblings like bulk_set_properties or set_system_property. The name 'import' implies batch import, but the description does not state exclusions or alternatives, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_acc_agentsARead-onlyIdempotent
List ACC (Agent Client Collector) agents and their status. Requires the ACC plugin
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| query | No | Additional encoded query | |
| status | No | Filter by agent status (e.g. "up", "down") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the plugin-availability prerequisite, which is real context, but says nothing about pagination behavior or result volume beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and the acronym expansion, then the prerequisite. No padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with a fully documented schema and no output schema, this is close to sufficient. The only meaningful gap is how 'query' and 'status' interact, which an agent may have to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (limit, query, status all documented with examples), so the schema carries the parameter burden. The description adds no parameter guidance of its own, which is the baseline case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource and expands the ACC acronym, which is non-obvious. It does not explicitly distinguish itself from its nearest siblings (list_acc_policies, list_acc_checks), but the resource name makes the distinction inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Requires the ACC plugin' clause is a useful precondition, but the description never says when to choose this over related listing tools or how to combine the status filter with the query parameter. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_acc_checksBRead-onlyIdempotent
List ACC check definitions. Requires the ACC plugin
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| query | No | Encoded query filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the ACC-plugin dependency, a useful behavioral constraint, but says nothing about pagination, default result size behavior, or what a 'check definition' contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, zero filler. Slightly under-specified rather than verbose, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only, two-parameter list tool with full schema coverage and no output schema, the essentials are present. It stops short of explaining what an ACC check definition is or how results are ordered/paged, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both 'limit' and 'query' documented inline including the default of 25. The description adds no additional meaning about query syntax or filtering fields, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List ACC check definitions'), which distinguishes it from the nearby list_acc_agents and list_acc_policies siblings by resource. It doesn't explicitly call out those alternatives, but the resource noun is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Requires the ACC plugin' is a genuine prerequisite that tells an agent when the call will fail, which is more than nothing. However, there is no guidance on when to choose this over list_acc_agents or list_acc_policies, nor on the intended workflow after listing definitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_acc_policiesARead-onlyIdempotent
List ACC monitoring/check policies. Requires the ACC plugin
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| active | No | Filter by active flag |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered by structured data. The description adds only the ACC-plugin dependency, which is real added value, but says nothing about pagination defaults, result size, or what happens when the plugin is absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and the prerequisite second. Nothing extraneous, nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read-only list tool with a fully documented schema and no output schema, the definition covers what and the key prerequisite. Missing only minor operational detail: whether results are paginated, default ordering, and what an empty response implies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters (limit, active) documented inline, so the schema carries the semantics. The description adds no extra meaning, such as how `active` interacts with the default 25-record cap or whether filtering applies before or after limiting. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List ACC monitoring/check policies.' An agent can distinguish it from the similarly named siblings list_acc_agents and list_acc_checks by the 'policies' noun, though the description never names those siblings to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Requires the ACC plugin' is a genuine precondition that tells the agent when the tool is callable at all. However there is no guidance on when to pick this over list_acc_checks or list_ui_policies, and no note on whether an empty result means no policies or a missing plugin.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_aclsARead-onlyIdempotent
List Access Control rules (ACLs) — who can read/write/create/delete records (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 25) | |
| table | No | Filter ACLs by table name | |
| active | No | Filter to active ACLs only | |
| operation | No | Filter by operation: read, write, create, delete, execute |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint. The description adds that it requires SCRIPTING_ENABLED=true, which is a behavioral constraint beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that efficiently conveys the purpose and a key requirement without any fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description does not explain the return format or default values for limit. It adequately covers purpose and prerequisite but leaves out some important details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds context for the operation parameter by listing the operations, but does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List), the resource (Access Control rules), and explains what ACLs do. It distinguishes from sibling tools like get_acl (single) and create_acl (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to list ACLs) and mentions a prerequisite (SCRIPTING_ENABLED=true), but does not explicitly state when not to use or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_action_instancesBRead-onlyIdempotent
List reusable Flow Designer action instances available in the environment
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| query | No | Search actions by name or category | |
| category | No | Filter by action category (e.g., "ServiceNow Core", "Integrations") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and open-world. The description adds little behavioral context beyond the name, such as pagination, sorting, or what 'available' means. With annotations covering safety, the description provides minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the verb 'List' and the resource, with no unnecessary words. It is efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward list tool with 3 parameters well-described in the schema and safety annotations, the description is adequately complete. It could mention output format or scope, but given the simplicity, it suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description. The tool description does not add further parameter semantics beyond the schema, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'reusable Flow Designer action instances', indicating a specific verb and resource. However, it does not explicitly differentiate from sibling tools like 'list_flows' or 'list_flow_executions', missing a chance to clarify uniqueness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. The description merely states what the tool does, without specifying context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_active_eventsARead-onlyIdempotent
List Event Management events (em_event), newest first. Defaults to unprocessed events (state Ready or Error); pass state "all" for every event. For the alerts operators act on, use list_alerts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max events (default: 10) | |
| query | No | Additional encoded query (e.g., "severity=1"). A state clause here overrides the state default. | |
| state | No | unprocessed (default: Ready + Error) | Ready | Processed | Error | Ignored | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint) and scope (openWorldHint), so the description's job is to disclose filtering and ordering semantics; it does that by naming the hidden default state filter and the sort order. It doesn't mention pagination or result volume for large event tables, which is the main remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded with the resource and the default filter. No filler, no restatement of the tool name as a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-optional-parameter read-only list tool with full schema coverage and no output schema, the definition covers scope, defaults, ordering, and the sibling alternative. Only return-shape and pagination guidance are absent, which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already documents its default and enum-like values, so the description mostly restates what the schema provides. The note that a state clause in 'query' overrides the state default is useful but is already present in the query parameter's schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List Event Management events (em_event)') plus ordering ('newest first'), and names the sibling list_alerts as the adjacent alternative. An agent can distinguish it from list_event_log, list_event_registry, and list_alerts without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the default behavior (unprocessed = Ready + Error), the escape hatch (state "all"), and an explicit routing rule: 'For the alerts operators act on, use list_alerts.' When-to-use and when-to-use-something-else are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_active_slasARead-onlyIdempotent
List active SLA records with optional filters
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 10) | |
| query | No | Encoded query filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, and openWorldHint=true, indicating safe, idempotent behavior. The description adds that filters are optional, which is minor context. No additional behavioral traits are disclosed beyond this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence containing all essential information: action, resource, and optionality of filters. No extraneous words; every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a straightforward list operation with clear parameters and annotations. It does not explain return values, but this is typical for list tools and not critical. Complete enough for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes both parameters (query and limit) with full coverage (100%). The description only rephrases 'optional filters', adding no new semantic information. Baseline 3 is appropriate as the schema handles parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List active SLA records with optional filters' clearly states the verb 'list', the resource 'active SLA records', and the scope 'with optional filters'. It distinguishes itself from sibling tools like 'get_sla_details' which retrieves a single SLA.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing active SLAs, and the name aligns with this purpose. It does not explicitly mention when not to use it or suggest alternatives, but the context is clear enough for a simple list operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alertsARead-onlyIdempotent
List Event Management alerts (em_alert) with operational filters. Defaults to alerts that are not Closed, most severe first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25, max 200) | |
| query | No | Additional encoded query appended with ^ (e.g. "short_descriptionLIKEdisk") | |
| state | No | Open | Reopen | Flapping | Closed. Default: everything except Closed. Use "all" for no state filter. | |
| source | No | Filter by event source (exact match) | |
| cmdb_ci | No | Filter by CI sys_id | |
| severity | No | Severity value or comma-separated list: 1 Critical, 2 Major, 3 Minor, 4 Warning, 5 OK, 0 Clear | |
| unassigned | No | true: only alerts with no assignment group and no assignee | |
| acknowledged | No | Only acknowledged (true) or unacknowledged (false) alerts | |
| assignment_group | No | Filter by assignment group sys_id | |
| without_incident | No | true: only alerts not yet linked to an incident |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the default exclusion of Closed alerts and the severe-first ordering, which an agent would otherwise not know. Return format and paging behavior remain undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler, with the resource identity and default scope front-loaded before the ordering note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter read-only list tool with a fully documented schema and no output schema, this is largely sufficient. The remaining gap is that nothing indicates result shape, paging beyond 'limit', or how the encoded 'query' interacts with the typed filters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter carries its own description, including the state default and severity enumeration. The description adds no per-parameter meaning beyond restating the Closed exclusion already present in the state field, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and a specific resource ('Event Management alerts (em_alert)'), plus the default behavior. It does not explicitly distinguish itself from nearby siblings such as get_alert_summary or list_active_events, so it stops short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'operational filters' and the non-Closed default, which tells an agent this is the general browsing tool. However, no alternative is named (get_alert by sys_id, list_active_events for live events), so the agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_approvalsARead-onlyIdempotent
List approval requests with optional filters
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 10) | |
| query | No | Encoded query filter | |
| state | No | Filter by approval state |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint. Description does not add extra behavioral context beyond 'optional filters'. Adequate but not revealing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, five words, front-loaded with verb and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with full schema and annotations. Missing guidance on filter logic or pagination, but sufficient for most uses given the annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with 100% description coverage. Description adds no extra meaning beyond stating filters are optional. Baseline score appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'approval requests' with optional filters, making it distinct from sibling tools like get_my_approvals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_my_approvals or search-based tools). Lacks context for when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_archive_rulesBRead-onlyIdempotent
List archive rules, optionally for one exact table.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| table | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the nuance that the table filter is an exact match, but says nothing about pagination behavior despite a limit parameter, nor about result ordering or size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though the extreme brevity leaves the parameter gap unaddressed rather than being an asset.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with two optional params and no output schema, this is minimally sufficient to call correctly. But the undocumented limit parameter and absent return-shape hints leave the agent guessing about result volume.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden. It clarifies the table parameter as an exact-match filter, but the limit parameter is never mentioned (default? max?), leaving half the parameters undocumented in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List archive rules") and adds the filter scope. The resource name is distinct from nearby siblings like list_cleanup_rules and list_data_management_policies, but the description never names those siblings to disambiguate which rule type to fetch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only implicitly guides usage through "optionally for one exact table" — it says you may filter, not when to filter or which alternative tool to pick (create_archive_rule, set_archive_rule_active, list_cleanup_rules). No when-not guidance at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_contractsBRead-onlyIdempotent
List asset maintenance and support contracts
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| active | No | Filter to active contracts (default true) | |
| asset_sys_id | No | Filter by linked asset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and idempotency. The description adds 'maintenance and support' context but does not disclose pagination, sorting, or default behavior beyond what's in the schema. With annotations present, the description adds marginal value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core purpose without extraneous words. It is efficiently front-loaded and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 optional parameters, no output schema), the description is adequate but minimal. It could benefit from mentioning the return type or typical fields, but omissions are not critical for understanding basic functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a clear description. The tool description adds no additional semantics beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'asset maintenance and support contracts', indicating the tool's function. It distinguishes itself from sibling tools like list_assets by focusing on contracts. However, it does not elaborate on what constitutes a contract, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., list_assets, list_approvals). The description implies usage for retrieving contract details, but lacks when-not-to-use scenarios or references to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assetsBRead-onlyIdempotent
List IT assets with optional filtering by state, class, or assigned user
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| query | No | Additional encoded query | |
| state | No | Asset state: "in_use", "in_stock", "retired", "missing" | |
| location | No | Location name or sys_id | |
| asset_class | No | Asset class table | |
| assigned_to | No | User sys_id to filter by assignee |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety and repeatability are covered structurally. The description adds only that filtering is optional; it says nothing about pagination behavior or what the caller gets back (no output schema exists to cover this).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; the resource comes before the filter list, which is the right order. It is terse to the point of leaving useful detail out, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read tool with fully documented schema this is close to sufficient, but with no output schema the description should say something about the returned collection or the default limit of 25, which materially affects how an agent calls it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with enum and format details (state values, asset_class table names), so the schema carries the load. The description names three of six filters but adds no semantics beyond the schema text and omits limit, query, and location entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (List) plus resource (IT assets) with the filter dimensions named, which cleanly separates it from get_asset, create_asset, and retire_asset in the sibling set. It does not, however, differentiate itself from adjacent inventory listers like list_software_installs or list_license_positions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'optional' clarifies that no filter is required, which is real usage guidance, but there is no explicit statement of when to choose this over get_asset or the other asset-adjacent list tools, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_atf_suitesARead-onlyIdempotent
List ATF test suites in the instance
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| query | No | Additional filter | |
| active | No | Filter to active suites only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds no behavioral details beyond the schema, so it meets the baseline but provides no extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Front-loaded with the verb and resource. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with optional parameters and annotations present, the description is sufficient. Could mention return format, but not required for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have schema descriptions (100% coverage), so the description does not need to add parameter info. It contributes nothing beyond the schema, resulting in baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'List' and resource 'ATF test suites in the instance'. It distinguishes from sibling tools like list_atf_tests and get_atf_suite by specifying suites as the target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like list_atf_tests or get_atf_suite. No context about prerequisites or filtering strategies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_atf_test_resultsARead-onlyIdempotent
List individual test results within a suite run
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 50) | |
| suite_result_sys_id | No | Filter by suite result sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds minimal behavioral context beyond the filtering constraint 'within a suite run'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and contains no filler. Every word is purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does not explain what fields or format the results have. It is adequate but incomplete for an agent to fully understand the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description does not add additional meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'individual test results' with a specific context 'within a suite run'. This distinguishes it from siblings like 'list_atf_tests' and 'list_atf_suites'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after retrieving a suite result, but does not explicitly state when to use this vs alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_atf_testsARead-onlyIdempotent
List ATF test cases, optionally filtered by suite
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| active | No | Filter to active tests only | |
| suite_sys_id | No | Filter by test suite sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, covering safety. The description adds minimal behavioral context beyond the schema-defined filtering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. The entire description is concise and directly communicates the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with three optional parameters and no output schema, the description is adequate but lacks details on return format, pagination, or default limit. Gaps exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description does not need to add parameter details. It adds no extra meaning beyond what the schema provides, meeting baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists ATF test cases with optional filtering by suite, using specific verb and resource. It distinguishes from sibling tools like list_atf_suites and list_atf_test_results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for browsing test cases but provides no explicit guidance on when to use this tool versus alternatives like search or get functions. No exclusions or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_attachmentsCRead-onlyIdempotent
List attachments associated with a specific record
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| table | Yes | Table name (e.g. "incident") | |
| record_sys_id | Yes | sys_id of the record whose attachments to list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint. Description adds no behavioral context beyond listing, such as response format, pagination, or side effects. Minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded, effectively conveying the tool's purpose without unnecessary words. Could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description is minimally adequate. Missing details like output format, pagination behavior, or error conditions, but basic function is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear parameter descriptions. Description does not add any additional meaning or context beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'List' and resource 'attachments' associated with a specific record, distinguishing it from other attachment tools like get_attachment_metadata or delete_attachment. It is specific but lacks additional context about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as get_attachment_metadata for a single attachment. No prerequisites or when-not-to-use information provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audit_control_testsARead-onlyIdempotent
List Control Tests (sn_audit_control_test) — the record of testing a Control within an audit engagement; this is the real "audit result" (there is no sn_audit_result table). Filter by control, test plan, or design/operation effectiveness.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| state | No | State filter. Single value or comma-separated list. -5=Scope, 1=Validate, 2=Fieldwork, 3=Closed Complete, 4=Closed Incomplete, 5=Follow Up, 6=Awaiting Approval | |
| control | No | Filter by related Control sys_id | |
| test_plan | No | Filter by related Test Plan sys_id | |
| display_value | No | Return human-readable reference/choice values (true) or both raw and display ("all") | |
| design_effectiveness | No | Filter by design effectiveness result | |
| operation_effectiveness | No | Filter by operating effectiveness result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful semantic context that the table serves as the audit result record (a data-model nuance an agent could not infer), but it says nothing about default page size, result ordering, or what a returned record looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and table name, with no filler. The em-dash construction makes the quotation-dense first sentence slightly harder to parse, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter, fully schema-documented list tool with no output schema, the description supplies what the schema cannot: what a control test actually represents and how it relates to audit engagements. Only pagination/return-shape expectations are left implicit, which is acceptable given the rich schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the state enum values and limit default is already documented. The description merely restates three of the eight filter names (control, test plan, design/operation effectiveness) without adding syntax, combination, or behavior detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (List Control Tests / sn_audit_control_test) and adds a genuine disambiguation: this record IS the audit result, there is no sn_audit_result table. It doesn't name a sibling tool (e.g. get_audit_control_test) as an alternative, but an agent can tell what this returns without reading the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence 'Filter by control, test plan, or design/operation effectiveness' implies the common retrieval contexts, but there is no explicit when-to-use / when-not-to-use guidance and no routing to alternatives such as get_audit_control_test for a single record or query_records for arbitrary filtering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audit_engagementsARead-onlyIdempotent
List Audit Engagements (sn_audit_engagement) — the top-level audit project record. Filter by state or engagement type. Ordered by most recently updated.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| state | No | State filter. Single value or comma-separated list. -5=Scope, 1=Validate, 2=Fieldwork, 3=Closed Complete, 4=Closed Incomplete, 5=Follow Up, 6=Awaiting Approval | |
| display_value | No | Return human-readable reference/choice values (true) or both raw and display ("all") | |
| engagement_type | No | Engagement type choice value, e.g. "4" (IT Audit), "6" (Compliance Audit), "11" (Vendor Audit) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds one genuinely non-derivable trait, "Ordered by most recently updated," but says nothing about pagination behavior, default page size, or whether all engagements are returned regardless of access scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses: identity/table, scope, filters, then ordering. Front-loaded with the resource name and zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with a fully documented five-parameter schema and no output schema, the description covers what the tool returns and how results are ordered. Only minor gaps remain (default limit of 25 is schema-only, no note on result volume).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the state and engagement_type parameters already carry enumerated code meanings plus examples. The description merely echoes that these two filters exist, adding no syntax, defaults, or interaction details (e.g. how state and query combine) beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("List Audit Engagements") along with the underlying table (sn_audit_engagement) and scope ("the top-level audit project record"), so the agent knows it returns project-level records, not child controls or tests. It does not explicitly distinguish itself from the sibling get_audit_engagement, though the List/Get verb difference is self-evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Filter by state or engagement type" implies the browse/filter use case, but there is no statement of when to use this versus get_audit_engagement for a single record, nor any prerequisite or exclusion. Usage is inferable rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_business_rulesARead-onlyIdempotent
List business rules (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| table | No | Filter by table name | |
| active | No | Filter to active rules only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and open-world, so the safety profile is clear. The description adds one behavioral trait: the requirement for SCRIPTING_ENABLED to be true, which is valuable context not covered by annotations. It does not disclose other behaviors like pagination or result structure, but the annotations cover the primary safety aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the core purpose and a key constraint. It is front-loaded and non-redundant. However, it could be slightly more detailed without becoming verbose, such as mentioning the optional filtering parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description should ideally mention what the tool returns (e.g., a list of business rule objects) or any default pagination behavior. It only states the action and a prerequisite. The sibling list is large, and this tool is one of many list tools, so the missing output details may cause uncertainty for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all three parameters ('table', 'active', 'limit') with descriptions. The tool description does not add any additional meaning or context for these parameters; it simply restates the prerequisite. Hence, the description adds no extra value beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'business rules', making the tool's purpose immediately understandable. It also adds a specific prerequisite condition, which is helpful for the agent. It distinguishes itself from sibling tools like 'get_business_rule' (single retrieval) and 'update_business_rule' (mutation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a key prerequisite ('requires SCRIPTING_ENABLED=true'), which is useful for usage context. However, it does not explicitly state when to use this tool versus alternatives (e.g., 'get_business_rule' for a single rule), nor does it mention when not to use it. The usage is implied but not fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_catalog_itemsCRead-onlyIdempotent
List available service catalog items
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items (default: 20) | |
| category | No | Filter by category name or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, providing basic safety info. The description adds no further behavioral context, such as pagination behavior, sorting, or the meaning of 'available'. It relies solely on the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that is to the point. It is not verbose, but could potentially be improved by including more context without becoming wordy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema exists, the description should at least hint at the return structure (e.g., list of items with basic fields). It does not mention what data is returned or pagination defaults beyond the limit parameter. For a simple list tool, this is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both 'category' and 'limit' parameters having meaningful descriptions. The tool description adds no extra detail beyond what the schema already provides, so it meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List available service catalog items' clearly states the action (list) and resource (service catalog items). It distinguishes from sibling tools like search_catalog or get_catalog_item by focusing on listing all available items, but it does not specify what 'available' means or differentiate from other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines are provided about when to use this tool versus alternatives such as search_catalog, get_catalog_item, or order_catalog_item. The description does not mention context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_change_requestsARead-onlyIdempotent
List change requests with optional filtering by state or query
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 10) | |
| query | No | Encoded query filter | |
| state | No | Filter by change state. -5=New, -4=Assess, -3=Authorize, -2=Scheduled, -1=Implement, 0=Review, 1=Closed, 3=Cancelled |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, covering safety and idempotency. The description adds the filtering behavior but does not elaborate on response format, pagination, or other behavioral traits. It adds minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly communicates the tool's purpose and key features. No superfluous content; well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with annotations covering safety, the description is adequate but lacks details on response structure or pagination behavior (though hinted by limit parameter). It meets minimum completeness given the tool's simplicity and schema richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented in the schema. The description repeats the filtering concept but does not add new semantic meaning beyond the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List change requests' with optional filtering by state or query, which distinguishes it from sibling list tools targeting other entities. It specifies verb and resource precisely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions optional filtering parameters, implying when to use (when a filtered list is needed). However, it does not explicitly state when not to use or provide alternative tool comparisons. The context is clear but lacks exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_changesetsARead-onlyIdempotent
List update sets (changesets) (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| state | No | Filter by state: "in progress", "complete", "ignore" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true. The description adds the behavioral constraint 'requires SCRIPTING_ENABLED=true', which is not covered by annotations. This provides additional safety information beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the action and resource. It includes a crucial prerequisite without extra words, making it highly concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a simple list operation with two optional parameters and no output schema, the description is mostly adequate. It covers the purpose and a key prerequisite. However, it could briefly mention that results can be filtered by state (as per schema) or that it returns a list of changesets, but the current level is sufficient for a low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters have descriptions in the schema). The description does not add any further meaning to the parameters beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'List' and the resource 'update sets (changesets)', using specific verbs and nouns. It distinguishes from sibling tools like 'get_changeset' (individual retrieval) and 'publish_changeset' (mutation). The prerequisite 'requires SCRIPTING_ENABLED=true' adds important context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a key prerequisite ('requires SCRIPTING_ENABLED=true'), which tells agents when the tool can be used. However, it does not offer explicit guidance on when to use this tool versus alternatives like 'list_update_sets' or 'get_changeset', nor does it exclude any use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cleanup_rulesBRead-onlyIdempotent
List Table Cleanup Rules (Auto Flush), optionally for one exact table.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| table | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered by structured data. The description adds the useful detail that the table filter is an exact match (not fuzzy), but says nothing about the effect of limit, pagination, or the shape of the returned rules.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource front-loaded and the optional filter appended. No wasted words, though the extreme terseness leaves no room for the missing limit or return-format detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a read-only list tool with no output schema, so the description should at least convey what comes back and how limit affects it. It covers what is listed and how to narrow it, but leaves result size and pagination behavior implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It does clarify 'table' as an exact-match filter, which genuinely adds value beyond the bare string type, but the 'limit' parameter is left entirely unexplained (no default, maximum, or effect on results).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('List Table Cleanup Rules') and adds the synonym '(Auto Flush)', so an agent can identify what is being listed. The naming convention makes it distinguishable from siblings like create_cleanup_rule or set_cleanup_rule_active, but the description itself does not name or contrast any alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Optionally for one exact table' implies a usage context: use it unscoped for all rules, or scoped to a single table. There is no explicit when-to-use/when-not guidance and no mention of the create/set-active siblings an agent might confuse this with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_client_scriptsARead-onlyIdempotent
List client scripts (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | "onLoad" | "onChange" | "onSubmit" | "onCellEdit" | |
| limit | No | Max results (default: 20) | |
| table | No | Filter by table name | |
| active | No | Filter to active scripts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and openWorldHint. The description adds value by disclosing the prerequisite (SCRIPTING_ENABLED=true) beyond annotations. No contradiction exists. It could further detail pagination or response format, but given annotation coverage, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the purpose and a key prerequisite with no wasted words. It is front-loaded and efficient, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description does not explain what the response contains (e.g., a list of client script objects). It only mentions a prerequisite. For a list tool with multiple parameters, this is a significant gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are well-documented in the schema. The description adds no additional meaning beyond what the schema already provides. Baseline of 3 is appropriate since the description does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'client scripts', which is specific. It also mentions a prerequisite (SCRIPTING_ENABLED=true) adding clarity. Among siblings like get_client_script, create_client_script, and update_client_script, this tool is well-distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite ('requires SCRIPTING_ENABLED=true'), which is a key usage guideline. It does not explicitly compare to other list tools, but the prerequisite serves as a condition for when to use. More explicit when-to-use and when-not-to-use guidance could elevate the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_compliance_controlsARead-onlyIdempotent
List Compliance Controls (sn_compliance_control). Filter by state, category, or the Entity (profile) it protects.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| state | No | State filter: draft, attest, review, monitor, retired | |
| profile | No | Filter by protected Entity sys_id (sn_grc_profile) | |
| category | No | ||
| key_control | No | Filter to key controls only | |
| display_value | No | Return human-readable reference values (true) or both ("all") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so safety and idempotency are covered. The description adds the filterable dimensions but says nothing about pagination limits, default/max record counts, or return format—modest added context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the tool's identity and immediately followed by allowable filters. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with 7 optional parameters, high schema coverage, and annotations covering safety, the description gives enough context to select and call it correctly. Minor gaps around limit/pagination and non-filter parameters are acceptable because those are documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so most parameters are already well documented. The description reinforces the state, category, and profile filters and clarifies that 'profile' means the Entity it protects, but adds little beyond the schema and omits meaning for limit, query, key_control, and display_value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('Compliance Controls') with the underlying table name, and notes supported filter dimensions. It is distinguishable from mutation siblings like create_compliance_control, but does not explicitly differentiate from read siblings such as get_compliance_control or list_control_objectives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage as a filtered listing tool by naming state, category, and profile filters, but gives no explicit when-to-use guidance or exclusions relative to siblings like get_compliance_control or list_control_objectives. The agent must infer that this is the bulk retrieval tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_compliance_policiesARead-onlyIdempotent
List Compliance Policies (sn_compliance_policy). Filter by state or category.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| state | No | State filter: draft, review, awaiting_approval, published, retired | |
| category | No | ||
| display_value | No | Return human-readable reference values (true) or both ("all") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so safety is covered. The description adds the underlying table name for context but discloses nothing about return shape, pagination defaults, or scope limits, which is appropriate but leaves a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler; the resource and filter hints appear immediately. Slightly terse rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with annotations covering safety and a schema documenting most parameters, the definition is complete enough to invoke correctly. The only modest gap is no note on pagination behavior beyond the limit parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents limit, query, state (with enums), and display_value. The description only reiterates 'filter by state or category' and adds no format or syntax detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'List' and resource 'Compliance Policies' and even names the underlying table (sn_compliance_policy). It is reasonably distinguishable from get_compliance_policy/create_compliance_policy via the 'list' verb and sibling naming convention, but it does not explicitly call out the difference from get_compliance_policy or list_compliance_controls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by state or category' hints at a common retrieval mode but gives no explicit when-to-use versus get_compliance_policy (single fetch) or list_compliance_controls (related records). Usage is implied by the 'list' verb rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_control_objectivesARead-onlyIdempotent
List Control Objectives (sn_compliance_policy_statement) — sits between Policy and Control. No number field on this table; filter by state or category.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| state | No | State filter: draft, review, approved, published, retired | |
| category | No | ||
| display_value | No | Return human-readable reference values (true) or both ("all") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the bar is lower. The description still contributes a genuine trait beyond them: this table has no number field, so number-based filtering will fail — a real caveat an agent would otherwise waste calls discovering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence plus one fragment, front-loaded with name, table, and hierarchy, then the filtering constraint. No filler whatsoever.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema and 80% schema coverage, the description supplies purpose, table identity, hierarchy, and the key filtering caveat. Pagination defaults and return shape are left to the schema, which is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the schema already documents limit, query, state (with value list) and display_value; baseline is 3. The description's note that there is no number field helpfully steers filtering to state/category and implicitly covers the undocumented category param, but adds no format or syntax detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List Control Objectives'), names the underlying table (sn_compliance_policy_statement), and locates it in the GRC hierarchy between Policy and Control, which lets an agent separate it from list_compliance_policies and list_compliance_controls. It stops short of explicitly naming the sibling to use instead, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'filter by state or category' implies how to narrow results, but there is no statement of when to choose this list versus get_control_objective or the parent policy/control lists. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_credential_aliasesARead-onlyIdempotent
List connection and credential aliases used by integrations
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by type: basic, oauth2, api_key, certificate | |
| limit | No | Max records to return (default 25) | |
| query | No | Search by name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior; description adds context that these are integration-related aliases, providing additional behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, directly states the purpose with no wasted words. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description is sufficient. The limit parameter addresses pagination implicitly. Could mention default behavior more explicitly, but still effective.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 3 parameters, so the description does not need to add parameter details. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists connection and credential aliases used by integrations, which is specific and distinguishes it from other list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives, but the context of listing credential aliases for integrations is clear and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_csm_accountsBRead-onlyIdempotent
List customer accounts with optional search filter
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| query | No | Search accounts by name | |
| active | No | Filter to active accounts only (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint. Description only adds 'optional search filter' which is already implied by the query parameter. No additional behavioral traits like pagination or sorting are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no fluff. All words are necessary and front-loaded with action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has 3 optional parameters and no output schema. Description is minimal but covers the basic purpose. Could specify default limit, pagination behavior, or what 'optional search filter' means in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters. Description mentions 'optional search filter' which aligns with the query parameter but adds no new meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists customer accounts with an optional search filter. While it does not explicitly differentiate from sibling list tools, the resource is specific and action is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus other list tools (e.g., list_csm_cases, list_csm_contacts). No when-not or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_csm_casesARead-onlyIdempotent
List CSM cases with optional filters (account, contact, state, priority)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Additional encoded query | |
| state | No | Filter by state (open, resolved, closed) | |
| account | No | Filter by account name or sys_id | |
| contact | No | Filter by contact name or sys_id | |
| priority | No | Filter by priority. 1=Critical, 2=High, 3=Moderate, 4=Low |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds no new behavioral details beyond what the annotations and schema already provide, so value is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, efficient sentence that conveys purpose and key parameters with zero waste. Front-loaded with action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 optional parameters and no output schema. The description does not explain return format or pagination behavior. While annotations provide some context, the description could be more complete for proper agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents each parameter. The description's mention of filters adds no new semantics beyond listing them, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('CSM cases') and mentions optional filters. It distinguishes from sibling tools that create, update, or close cases, making purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates that this tool is for listing cases with filters, providing clear context. However, it does not explicitly state when not to use or list alternatives, but sibling names like 'get_csm_case' and 'close_csm_case' provide differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_csm_contactsARead-onlyIdempotent
List contacts for an account or search across all contacts
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search by name or email | |
| account_sysid | No | Filter contacts by account sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description only needs to add context. It adds the filtering capabilities, but does not disclose any behavioral nuances like return format, pagination, or default ordering. This is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the tool's purpose and two main modes. Every word is necessary, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with well-documented parameters and full annotation coverage, the description is complete. It explains the dual functionality. However, it could mention the default limit of 25 or the fact that the output is a list of contact records, but given no output schema, this is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters already described in the schema. The description reiterates the account and search functionality without adding additional meaning or usage details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List contacts for an account or search across all contacts' clearly states the verb (list) and resource (contacts), and distinguishes two main use cases (account-specific vs. global search). This differentiates it from sibling tools like get_csm_contact (single contact) and other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies two usage modes (filter by account or search), but does not explicitly state when to use each, nor provides guidance on when not to use or alternatives. It lacks criteria for choosing between this and similar tools like list_csm_accounts or search functions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_csm_productsARead-onlyIdempotent
List products and services available in the CSM catalog
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| query | No | Search products by name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety, idempotency, and non-exhaustive results. The description adds no additional behavioral context (e.g., pagination behavior, default sorting, or data freshness). It meets the baseline for transparency given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence of 10 words with no redundant information. It is front-loaded and efficient, earning a top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two optional parameters and comprehensive annotations, the description is largely sufficient. However, it lacks explicit mention of return fields or pagination behavior beyond the schema's 'limit' parameter, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear descriptions for 'query' and 'limit'. The description itself adds no parameter-level information, aligning with the baseline score for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and identifies the resource 'products and services' within the 'CSM catalog'. This clearly distinguishes it from sibling tools like list_csm_accounts and list_csm_cases, which focus on different CSM entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool instead of alternatives such as search_catalog or natural_language_search. It does not mention any prerequisites, limitations, or exclusion criteria, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_data_management_policiesBRead-onlyIdempotent
List Data Management Policies, optionally for one exact table.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| table | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the useful semantic that the table filter is an exact match (not a pattern search), but says nothing about pagination, default result size, or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource named first and the only meaningful qualifier attached. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter list tool with no output schema and zero schema coverage, the description leaves the limit parameter and the shape of the returned list (fields, paging behavior) entirely unspecified. An agent can call it, but cannot predict the result size or what the objects contain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden. It clarifies that 'table' is an exact-match filter, which is genuinely useful, but the 'limit' parameter is never mentioned and no default or range is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List Data Management Policies') with a scope qualifier ('optionally for one exact table'), which is enough to distinguish it from get_data_management_policy and create_data_management_policy. It does not explicitly name those siblings as alternatives, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Optionally for one exact table' implies when to pass a filter, but there is no explicit when-to-use/when-not guidance and no mention of the sibling tools (get_data_management_policy, create_data_management_policy) an agent might confuse it with. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_data_sourcesARead-onlyIdempotent
List Import Set data source definitions (file/JDBC/REST loaders)
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by type: file, jdbc, ldap, rest | |
| limit | No | Max records to return (default 25) | |
| query | No | Search by name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, indicating safe read operations. The description adds no additional behavioral context such as pagination, return format, or rate limits, but the annotations sufficiently cover safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that efficiently communicates the tool's purpose without unnecessary words or structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the absence of an output schema, and the presence of thorough annotations, the description is adequately complete for an agent to understand the tool's basic function. Minor gaps like pagination behavior could be added but are not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all three parameters. The description mentions 'file/JDBC/REST loaders' which aligns with the type parameter filter values but does not add new meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'Import Set data source definitions', and specifies the scope 'file/JDBC/REST loaders', distinguishing it from sibling tools like list_import_sets which list import sets themselves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are any exclusions or prerequisites mentioned. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deployment_historyBRead-onlyIdempotent
List deployment history — committed update sets and app installs over time
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look-back period (default 30) | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, indicating safe, read-only, idempotent behavior. The description adds no behavioral context beyond these annotations, such as whether results are paginated, sorted, or if there are any side effects. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that captures the essence. However, it lacks structural elements like bullet points or sections that could improve readability for complex usage. It is efficient but minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a list operation with no output schema, the description could have provided more context about the return format (e.g., fields included, ordering). It adequately conveys the purpose but leaves out details that would help an agent understand the output structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; only 'days' has a description ('Look-back period (default 30)'). The 'limit' parameter lacks any description. The tool description mentions 'over time' but does not clarify the 'days' or 'limit' parameters beyond what is in the schema. It fails to compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: 'List deployment history — committed update sets and app installs over time'. It specifies the resource (deployment history) and the scope (committed update sets and app installs), distinguishing it from sibling tools like 'list_deployments' or 'get_deployment'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it, prerequisites, or compare it to similar tools such as 'list_deployments' or 'list_changesets'. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deploymentsBRead-onlyIdempotent
List recent application deployments tracked in ServiceNow
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| state | No | Filter by state: "success", "failed", "in_progress" | |
| environment | No | Filter by environment (e.g. "prod", "staging") | |
| pipeline_sys_id | No | Filter by pipeline |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety and idempotency are clear. The description adds 'recent' implying time-based filtering but does not detail pagination, ordering, or default behavior beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the tool's purpose with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool, good annotations, and no output schema, the description is mostly complete. However, it lacks details on sorting or filtering behavior that might be expected from a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter has a clear description. The tool description adds no additional meaning beyond what the schema already provides, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List recent application deployments' with a specific verb and resource. It distinguishes from most siblings but does not explicitly differentiate from the closely related sibling 'list_deployment_history', which may cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'list_deployment_history' or 'get_deployment'. The description does not mention any usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_devops_pipelinesBRead-onlyIdempotent
List DevOps pipeline configurations registered in ServiceNow
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| active | No | Filter to active pipelines (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint. Description adds no new behavioral context beyond 'list'. Given annotations, this is adequate but doesn't add value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Could be slightly more informative (e.g., mention default filters), but structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with no output schema. Description could mention default filtering (active=true) or pagination. While not severely incomplete, there is room for improvement given the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions (100% coverage). Description does not add additional parameter meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'List' and resource 'DevOps pipeline configurations'. It distinguishes from other list tools by specifying the resource, though it could be more distinctive from potential siblings like 'list_deployments'. The specificity is adequate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. No mention of context, prerequisites, or exclusion criteria. For a simple list tool, this is a gap, but common in similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_discovered_devicesARead-onlyIdempotent
List per-device Discovery results (discovery_device_history) — classification, resulting CI, and issue count. Use to answer "why was this server not discovered?"
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| run_id | No | Filter by parent discovery_status sys_id or number | |
| source | No | Filter by device IP / source (LIKE match) | |
| with_issues_only | No | Only devices that reported issues |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and open-world, so the safety profile is covered. The description adds genuine value beyond that by disclosing what each record carries — classification, resulting CI, and issue count — which matters because there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The identity and payload come first, with the motivating question last as a targeting cue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with four optional filters, the description supplies the resource identity, record contents, and a use case, and annotations cover the safety profile. Minor gap: nothing about pagination behavior or ordering, though the limit default is in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four filters (limit, run_id, source, with_issues_only) are documented in the schema. The description only alludes to issues via 'issue count' and adds no filter syntax or matching semantics beyond what the schema states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource, names the backing table (discovery_device_history), and enumerates the record contents (classification, resulting CI, issue count). The 'per-device' framing implicitly separates it from per-run siblings like list_discovery_runs, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete diagnostic question it answers ('why was this server not discovered?'), which is real routing guidance rather than a restatement of the name. It stops short of stating when to use list_discovery_runs or list_discovery_logs instead, so no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_discovery_credentialsARead-onlyIdempotent
List Discovery credential METADATA (name, type, order, MID scope) — secret fields are never returned
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by credential type (e.g. "Windows", "SSH", "SNMP") | |
| limit | No | Max records (default 25) | |
| active | No | Filter by active flag |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds meaningful behavioral context by stating that only metadata is returned and that secret fields are never exposed, which is important for an agent handling credentials.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted words. The return-field summary and the secret-exclusion caveat are packed efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema and rich annotations, the description is nearly sufficient: it names the metadata fields returned and explicitly rules out secret fields. It does not describe filtering or pagination behavior, but the schema covers parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the three optional parameters are already documented in the schema. The description does not add filter semantics beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: "List Discovery credential METADATA." It is clear what is returned and what is excluded, though it does not explicitly distinguish itself from nearby sibling list tools such as list_credential_aliases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, when not to use it, or any prerequisite context. The listing purpose is implied by the name and description, but no real selection guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_discovery_logsARead-onlyIdempotent
List Discovery log entries (discovery_log) — sensor/probe messages with result codes, newest first
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| query | No | Additional encoded query (e.g. "short_messageLIKEcredential") | |
| run_id | No | Filter by parent discovery_status sys_id | |
| device_history_id | No | Filter by discovery_device_history sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so safety and mutability are covered structurally. The description adds the one genuinely extra fact, that results come back newest first, but says nothing about pagination, volume, or what result codes signify for troubleshooting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb and resource, and every clause carries information: table name, payload type, and sort order. Nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description only gestures at the shape of a record ('result codes') without describing fields or paging behavior. Adequate to call the tool, but thin for interpreting Discovery log output when diagnosing probe failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every one of the 4 optional filters is documented in the schema itself, so baseline 3 applies. The description adds no format hints, valid values, or guidance on combining the encoded query string with the sys_id filters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb plus resource (list Discovery log entries), with the exact table name (discovery_log) and a one-line characterization of the payload (sensor/probe messages with result codes). It stops short of distinguishing itself from nearby siblings such as list_discovery_runs or get_discovery_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the tool name and the 'newest first' note; there is no explicit statement of when to reach for this versus list_discovery_runs, get_discovery_run, or list_discovered_devices, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_discovery_rangesARead-onlyIdempotent
List Discovery IP ranges (discovery_range_item) — which IP ranges/networks are scanned
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| active | No | Filter by active flag |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover the safety profile: readOnlyHint=true, idempotentHint=true, and openWorldHint=true. The description adds useful domain context about scanned networks, but does not describe pagination, return shape, or any special access considerations beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficiently structured sentence with the core purpose front-loaded. The parenthetical and em-dash clarification add precision without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity list tool with two optional parameters, full schema coverage, and sufficient annotations, the description gives enough context to invoke it correctly. It could be marginally stronger by mentioning the active filter or default page size, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters ('limit' and 'active') are documented in the schema. The description does not add filter semantics or format details beyond the schema, so the baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('Discovery IP ranges (discovery_range_item)'), then clarifies scope as 'which IP ranges/networks are scanned'. This clearly separates it from sibling discovery tools such as list_discovery_runs, list_discovered_devices, and list_discovery_schedules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource name, but the description gives no explicit when-to-use or when-not-to-use guidance. It does not name alternatives or explain when an agent should choose this over related discovery list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_discovery_runsARead-onlyIdempotent
List Discovery run history (discovery_status) — state, duration, and progress per scan, newest first
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| query | No | Additional encoded query | |
| state | No | Filter by run state (e.g. "Active", "Complete", "Cancelled") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a safe read-only and idempotent operation. The description adds useful behavioral context beyond that: results are ordered newest first, and each row includes state, duration, and progress.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single compact sentence with no wasted words. The tool's resource and ordering are front-loaded, and the listed fields follow immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with full schema coverage and safety annotations, the description covers the essential purpose and return shape. It does not state pagination behavior or the default limit, but those are documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents limit, query, and state. The description does not add syntax or semantics beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it lists Discovery run history. It also names the concrete fields returned (state, duration, progress) and the ordering, which clearly distinguishes it from get_discovery_run and the other discovery-related list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for viewing run history, but it does not explicitly say when to use it instead of get_discovery_run, list_discovery_logs, or list_job_run_history. The usage context is clear enough, but alternatives are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_discovery_schedulesARead-onlyIdempotent
List discovery schedules and their run status
| Name | Required | Description | Default |
|---|---|---|---|
| active_only | No | Only show active schedules |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'and their run status', which mildly expands on what the tool returns. Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, so the description adds minimal behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with purpose. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description fully communicates the tool's function. Annotations cover additional behavioral traits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'active_only'. The description does not elaborate on this parameter, so it adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'discovery schedules', adding 'and their run status' for specificity. It is easily distinguishable from sibling tools like 'list_scheduled_jobs' or 'list_approvals'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives is provided. However, given the unique resource name and lack of confusing siblings, the implied usage is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ecc_queueARead-onlyIdempotent
Inspect the ECC Queue (ecc_queue) — the job/result bus between the instance and MID Servers. Useful for debugging Discovery, integrations, and ACC data flow. Payload is excluded by default (can be very large); set include_payload to fetch it. CAUTION: payloads can contain sensitive data (command output, host details, credential references) — request them only when needed and handle the output accordingly.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | MID Server name (e.g. "mid01") or full agent string ("mid.server.mid01") | |
| limit | No | Max records (default 25) | |
| queue | No | "input" (MID→instance) or "output" (instance→MID) | |
| state | No | Filter by state (e.g. "ready", "processing", "processed", "error") | |
| topic | No | Exact topic filter (e.g. "SSHCommand", "MIDExtension:MonitoringExtension") | |
| since_hours | No | Only records created in the last N hours | |
| name_contains | No | Contains-match on the name field (e.g. "ACC") | |
| include_payload | No | Include the payload field (default false — payloads can be huge) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world semantics, yet the description adds substantive context: payload is excluded by default, payloads can be very large, and they may contain sensitive data such as command output, host details, and credential references. It does not cover pagination, ordering, or result size limits beyond the limit default, keeping it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three well-ordered sentences: resource definition, usefulness, then the payload default plus the security caution. The caution sentence is dense but earns its place on a security-sensitive parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With eight optional, fully documented parameters, no output schema, and safety annotations present, the description supplies everything needed to call the tool correctly, including the payload trade-off. Only the absence of any mention of result shape or volume (beyond payload size) leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning to include_payload — that omitting it avoids very large payloads and that including it exposes sensitive content. Other parameters get no elaboration beyond the schema, so it is an incremental rather than full improvement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (Inspect) and resource (ecc_queue) and goes further by defining the resource as the job/result bus between the instance and MID Servers. That definition alone separates it from nearby siblings such as list_mid_server_issues, list_soap_messages, and list_acc_agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage contexts — debugging Discovery, integrations, and ACC data flow — which is clear guidance on when to reach for it. It does not name an explicit alternative tool or a when-not-to-use condition, so it falls 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.
list_email_logsARead-onlyIdempotent
List outbound email log entries to track sent/failed emails
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| state | No | Filter by state: sent, failed, ready, sending, ignored | |
| subject | No | Filter emails by subject (partial match) | |
| recipient | No | Filter by recipient email address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds context by specifying the log type (outbound email) and the tracking purpose, but does not disclose additional behaviors like pagination or ordering. It is consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 12 words, front-loaded with the action and resource. Every word is necessary, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high schema coverage and annotations indicating a safe, read-only operation, the description is sufficient. It explains what it does and why. Minor omission: no mention of default limit or return format, but still complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. The tool description does not add further meaning to the parameters beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb ('list'), the resource ('outbound email log entries'), and the purpose ('to track sent/failed emails'). It distinguishes itself from sibling list tools by specifying the email log context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the purpose but does not provide guidance on when to use this tool versus alternatives (e.g., list_event_log, list_notifications). No mention of when not to use it or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_email_templatesCRead-onlyIdempotent
List email notification templates used by notifications
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search templates by name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only and idempotent nature; description adds no additional behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no waste; efficient for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Minimally adequate for a simple read-only list tool with complete schema and annotations, but lacks typical use cases or result format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema with 100% coverage fully describes parameters; description adds no extra semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb ('list') and resource ('email notification templates'), but does not differentiate from sibling tools like list_notifications or list_email_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives; lacks any context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_epicsARead-onlyIdempotent
List epics with optional product, theme or state filter
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| state | No | Filter by state | |
| theme | No | Filter by theme sys_id (scrum_theme) | |
| product | No | Filter by product sys_id (cmdb_model) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is fully covered and the description doesn't contradict them. Beyond filter scoping, the description adds nothing about result ordering, pagination behavior, or what happens when no filter matches — modest added value given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is possibly too terse given the tool has four parameters, but every word earns its place and the core purpose leads.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with complete schema documentation and full annotations, the definition gives the agent enough to call it correctly. No output schema exists, yet the description doesn't mention the return shape or pagination, which is the only remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: all four parameters, including the limit default of 20 and the sys_id types for theme (scrum_theme) and product (cmdb_model), are already documented in the schema. The description only names three of the filters, adding no semantics beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('epics') plus the available filter dimensions, so the agent immediately knows this is a read-only enumeration of epics. It does not explicitly distinguish itself from nearby siblings like list_stories or list_scrum_tasks, but the resource name is unambiguous enough to separate them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'optional' implies the tool can be called with no filters, which is useful. However, there is no guidance on when to prefer this over alternatives (e.g., list_stories for a hierarchy walk) and no stated prerequisites such as needing a product or theme sys_id to scope meaningfully.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_event_logBRead-onlyIdempotent
List recent event log entries (fired events and their processing status)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| state | No | Filter by state: ready, processing, processed, error, transferred | |
| event_name | No | Filter by event name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds the context of listing 'recent' entries and mentions processing status, but no contradictions or additional behavioral disclosures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with front-loaded verb and resource, no unnecessary words. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a list tool with good annotations and full schema. Could be more explicit about ordering, default limit, or what 'recent' means (e.g., time window), but not critically missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for all three parameters. The description does not add any parameter-specific information beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'event log entries' with additional context about fired events and processing status. However, it does not differentiate from sibling tools like list_active_events or list_email_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., list_active_events for active events, list_email_logs for email entries). The description only explains what it does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_event_registryARead-onlyIdempotent
List registered event definitions in the ServiceNow event registry
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| query | No | Search events by name or description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description does not add behavioral details beyond confirming it's a list operation. No added value for safety or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is clear and to the point. No redundancy or unnecessary words. It earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While annotations cover safety and schema covers parameters, there is no output schema, and the description does not describe return value structure or fields. For a list tool, this information is useful for the agent to process results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters (query, limit) with descriptions. The description does not add any semantic meaning or usage hints for parameters beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('registered event definitions in the ServiceNow event registry'), clearly distinguishing it from siblings like 'get_event_registry_entry' (single entry) and 'list_event_log' (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'get_event_registry_entry' or 'search_catalog'. The description implies basic usage but lacks explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_flow_executionsARead-onlyIdempotent
List recent executions of a flow with status (completed, error, running)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| status | No | Filter by status: running, complete, error, cancelled | |
| flow_sys_id | Yes | sys_id of the parent flow |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint; description adds 'recent' and possible statuses but doesn't disclose ordering, default limit (25), or result structure beyond what schema implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 12 words, front-loaded with key information, no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple list tool given annotations, but no output schema and missing details on pagination, ordering, and exact recency criteria.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so description adds limited value; it mentions status filter and 'recent' but doesn't specify default limit semantics beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists recent executions of a flow with status options, distinguishing from siblings like list_flows (lists flows) and get_flow_execution (gets a single execution).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for retrieving execution history, but no explicit guidance on when to use vs alternatives like get_flow_execution for specific details or list_flows for flow definitions. No context on recency filter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_flowsARead-onlyIdempotent
List Flow Designer flows with optional filter by name, category, or active status
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| query | No | Search flows by name or description | |
| active | No | Filter to active flows only (default true) | |
| category | No | Filter by category (e.g., "ITSM", "HR", "Security") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety. The description adds minimal behavioral context beyond the listing operation. No contradictions, but no disclosure of pagination, sorting, or other behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the core action, no redundant words. Every piece of information earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a simple read-only list operation but lacks mention of return format (e.g., list of flow objects). Given no output schema, a hint about the response structure would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes each parameter. The description paraphrases the filter options (name, category, active status) but adds no meaningful information beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists Flow Designer flows with optional filters. The verb 'list' and resource 'flows' are specific. Distinguishes from sibling list tools (e.g., list_flow_executions) by specifying 'Flow Designer flows'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for listing flows with filters but does not provide explicit guidance on when to use this versus sibling list tools or alternative search tools. No exclusion criteria or context are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_grc_entitiesARead-onlyIdempotent
List GRC Entities (sn_grc_profile) — the "thing being assessed" (business unit, vendor, application, process, etc.). No number/state field on this table; filter by class or CI.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by name (LIKE match) | |
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| cmdb_ci | No | Filter by linked CMDB CI sys_id | |
| display_value | No | Return human-readable reference values (true) or both ("all") | |
| profile_class | No | Filter by Entity class sys_id (sn_grc_profile_class) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld behavior, so the baseline is lower. The description adds meaningful table-level context: it names sn_grc_profile and notes the absence of a number/state field, which helps the agent avoid invalid filters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and followed by a practical constraint. Every sentence adds value with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and annotations covering safety behavior, the description is largely complete. It could mention pagination or return shape, but the limit parameter already covers record count and no output schema exists, so the remaining gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema. The description reinforces filtering by class or CI, but it does not add syntax or meaning beyond what the schema provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: list GRC Entities from table sn_grc_profile. It also explains what an entity is with concrete examples (business unit, vendor, application, process), making the resource distinguishable from sibling GRC tools like get_grc_entity or list_grc_issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description adds useful filtering guidance—no number/state field, so filter by class or CI—but does not explicitly say when to use this tool versus alternatives such as get_grc_entity for a single record. Usage is implied rather than fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_grc_indicatorsARead-onlyIdempotent
List GRC Indicators (sn_grc_indicator, KRI/KPI) — periodic pass/fail metrics measuring a Control or Risk (item) for a given Entity. Filter by entity, category, or last result.
| Name | Required | Description | Default |
|---|---|---|---|
| item | No | Filter by the measured Control/Risk sys_id | |
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| active | No | ||
| entity | No | Filter by related Entity sys_id (sn_grc_profile) | |
| category | No | ||
| display_value | No | Return human-readable reference values (true) or both ("all") | |
| last_result_passed | No | Filter by whether the last collection passed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds useful domain context that these are periodic pass/fail metrics for a Control or Risk, but it does not disclose result shape, pagination behavior, or other operational traits beyond what the schema and annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with an em-dash clarification and a compact filter summary. There is no filler, and the key domain context is stated before the filtering detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with annotations covering safety and a schema documenting most parameters, the description supplies the necessary domain framing and filter scope. It could be more complete by naming when to use it over sibling indicator tools, but the core information needed to call it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema already documents most parameters. The description adds semantic clarity by explaining that `item` is the measured Control/Risk and that the indicator is scoped to an Entity, but it does not explain the remaining parameters such as `query`, `active`, `limit`, or `display_value`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('List GRC Indicators'), names the table (sn_grc_indicator), and defines the domain object as KRI/KPI metrics measuring a Control or Risk for an Entity. It is clear on its own, but it does not explicitly differentiate itself from nearby siblings such as list_pa_indicators or list_indicator_results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Filter by entity, category, or last result' implies the common filtering use cases, but there is no explicit guidance on when to use this tool versus get_grc_indicator, list_indicator_results, or list_pa_indicators. Usage is inferable but not documented as a routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_grc_issuesARead-onlyIdempotent
List GRC Issues (sn_grc_issue) — the generic finding/gap record used for compliance gaps and audit findings. Filter by state, Entity, or classification.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| state | No | State filter. Single value or comma-separated list: 0=Review, 1=New, 2=Analyze, 5=Respond, 3=Closed Complete, 4=Closed Incomplete | |
| profile | No | Filter by related Entity sys_id | |
| display_value | No | Return human-readable reference values (true) or both ("all") | |
| classification | No | ||
| assignment_group | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered and the bar is lower. The description adds the meaningful behavioral note that this table is the catch-all for compliance gaps and audit findings, but says nothing about volume (default 25 / max 1000 is only in schema), ordering, or what a returned record looks like. Useful context, but thin beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the identity and table name, followed by filter scope. Nothing is padded and no sentence merely restates the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full annotations and a reasonably documented schema, the description supplies enough to call it correctly, and the domain definition of the record type is the key missing ingredient it provides. Only the lack of routing against sibling issue/audit tools keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, so the schema largely carries the parameter burden and baseline 3 applies. The description name-drops state, Entity, and classification, and its use of "Entity" usefully bridges to the "profile" parameter (which the schema explains as a related Entity sys_id). Four of seven parameters — limit, query, display_value, assignment_group — are untouched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (List GRC Issues / sn_grc_issue) and explains what the record type actually is — the generic finding/gap record for compliance gaps and audit findings. That domain gloss is genuinely useful. It does not explicitly distinguish itself from sibling readers like get_grc_issue or list_compliance_controls, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Filter by state, Entity, or classification" implies how the tool is typically scoped, but never says when to reach for this instead of get_grc_issue, list_audit_engagements, or list_control_objectives. There are no exclusions or preconditions. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_groupsARead-onlyIdempotent
List groups with optional search filter
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| query | No | Filter (e.g., "active=true^typeLIKEitil") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and open-world behavior. The description adds no new behavioral context beyond listing with optional filter. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It is front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not explain return format (e.g., list of group names), pagination, or ordering. Adequate for a simple list but leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully defined. The description adds minimal value by referring to 'search filter' but doesn't exceed schema detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'List' and resource 'groups', and includes the optional search filter, distinguishing it from other list tools and from get_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like get_group or search tools. However, the purpose is implied and clear enough for basic usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_homepagesARead-onlyIdempotent
List homepage dashboards (CMS content pages used as homepages)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search by title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, indicating a safe, idempotent read operation. The description adds that it lists 'homepage dashboards (CMS content pages used as homepages)', which clarifies scope but doesn't add behavioral traits beyond annotations. No contradiction noted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and resource. Every word is necessary, and there is no superfluous information. It efficiently communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal and does not mention return format or typical fields, which could be helpful given no output schema. However, for a simple list tool with clear annotations, it is adequate but leaves room for more context, such as differentiating from other list tools or specifying what is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (query, limit) already described. The description does not add any additional meaning or context for the parameters beyond what is in the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List homepage dashboards (CMS content pages used as homepages)', providing a specific verb and resource. It distinguishes from siblings like list_pa_dashboards and list_portal_pages by specifying that these are homepages, i.e., CMS content pages used specifically as homepages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. Among sibling tools, there are many list_* tools, but the description does not provide any when/when-not or exclusions. This leaves the agent without differentiation cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_hr_casesARead-onlyIdempotent
List HR cases with optional filters (status, subject person, service)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Additional encoded query string | |
| state | No | Filter by state: open, work_in_progress, closed_complete, closed_incomplete | |
| hr_service | No | HR service name or sys_id | |
| subject_person | No | User sys_id or username to filter by |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint. The description adds that it lists cases with filters, but does not disclose other behavioral traits like default limit or pagination. Minimal addition beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence front-loading the purpose. However, it could be slightly longer to include default limit or usage context without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity and good schema, the description is minimally adequate. It lacks details on default limit, pagination, or differentiation from sibling list tools, but schema covers parameter values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description only categorizes them as 'optional filters' without adding new meaning or combining rules. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists HR cases and mentions optional filters, distinguishing it from get_hr_case (single case) and list_hr_tasks (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions optional filters but does not specify when to use this tool vs alternatives like get_hr_case or how filters combine. No explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_hr_document_templatesARead-onlyIdempotent
List available HR document templates (offer letters, contracts, policies)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| active | No | Filter active only (default true) | |
| category | No | Filter by category: onboarding, offboarding, benefits, policy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, and openWorldHint, which cover safety and idempotency. The description adds no further behavioral details such as pagination behavior, sorting defaults, or response structure. Since annotations already convey the non-destructive nature, the description's contribution is minimal, resulting in a mid-range score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the key action and resources. It is concise with no extraneous information, though it could benefit from a brief usage context or note about the optional filter parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 optional params, no output schema), the description is mostly adequate but lacks details on return format or pagination beyond the limit parameter. Annotations cover safety, but for a listing tool, some guidance on expected response structure would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters (category, active, limit), each with clear descriptions and defaults. The tool description adds value by listing example categories ('onboarding, offboarding, benefits, policy') but does not fundamentally enhance understanding beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('List available HR document templates') and provides specific examples of document types (offer letters, contracts, policies), making the purpose unambiguous. It distinguishes itself from sibling list tools by focusing on HR document templates rather than general records or other HR entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to retrieve templates but does not provide explicit guidance on when to use it versus alternatives like searching or filtering. It lacks when-not-to-use scenarios or references to related tools, leaving the agent to infer from the tool name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_hr_servicesARead-onlyIdempotent
List available HR services (Onboarding, Offboarding, Benefits, Payroll, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| query | No | Filter by name or description | |
| active | No | Filter to active services only (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide comprehensive behavioral info: readOnlyHint, idempotentHint, openWorldHint. The description adds no new behavioral context beyond confirming it's a listing operation. With full annotations, the burden is lower, and the description doesn't contradict or extend.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose and includes examples. No extraneous words; every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with well-annotated safety and full parameter schema, the description adequately conveys what the tool returns (HR services with examples). No output schema exists, but the examples give sufficient context. Slight improvement could be mentioning the return format, but not strictly needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters (active, query, limit) with descriptions. The tool description adds no additional meaning or usage nuance beyond what the schema already provides. Baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('List available HR services') and provides concrete examples (Onboarding, Offboarding, Benefits, Payroll). It is specific and distinguishes itself from many sibling list tools by focusing on HR services.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one needs to know available HR services, but it does not explicitly state when to use this tool versus alternatives like list_hr_cases or list_hr_tasks. No exclusions or alternative tool mentions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_hr_tasksARead-onlyIdempotent
List HR tasks associated with an HR case
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Filter by task state (open, closed) | |
| hr_case_sysid | Yes | sys_id of the parent HR case |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and open-world behavior. The description adds that tasks are associated with an HR case, but it does not disclose additional behavioral traits such as pagination, ordering, or error handling when the case does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded and contains no unnecessary words. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two well-documented parameters and annotations, the description is adequate but not complete. It does not mention the return type or format of the list, nor any default behavior, which could be helpful for agents using the tool without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are described in the schema. The description does not add further meaning beyond what the schema provides (e.g., it doesn't specify allowed values for the state parameter). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List), the resource (HR tasks), and the relationship (associated with an HR case). It effectively distinguishes this tool from other list tools in the sibling list by specifying the context of HR tasks tied to a case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to see tasks for a specific HR case, but it does not explicitly state when to use this tool over alternatives like list_my_tasks or list_hr_cases. No exclusions or alternative tool mentions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_import_setsBRead-onlyIdempotent
List Import Sets with optional filter by state or staging table
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Additional encoded query string | |
| state | No | Filter by state: loaded, partial, transform_failed, complete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and idempotentHint, so the read-only nature is clear. The description adds the ability to filter by state or staging table, but does not mention pagination behavior or the default limit, which is in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys the essential information without any fluff. Each word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description could hint at the return format or structure. The annotations are helpful, but the description leaves out details about the response, which is incomplete for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. The description adds a high-level summary of filters but does not elaborate on the 'query' or 'limit' parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Import Sets with optional filters by state or staging table. It uses a specific verb and resource, but does not explicitly differentiate from 'get_import_set' which likely returns a single record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention that for a single import set, 'get_import_set' would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_indicator_resultsARead-onlyIdempotent
List Indicator Results (sn_grc_indicator_result) — individual pass/fail collection events for an Indicator. Empty on dev400464 at verification time (2026-07-12); included for instances where indicator collection has run.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| passed | No | Filter by pass/fail result | |
| indicator | No | Filter by related Indicator sys_id | |
| display_value | No | Return human-readable reference values (true) or both ("all") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and open-world behavior, so the bar is lower. The description adds genuine context beyond them: the result set may be empty unless collection has run, which sets expectations about return behavior. It does not cover pagination or ordering, but the emptiness warning is the key behavioral fact for this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the purpose (with table name and record type) is front-loaded, and the emptiness note follows. No padding, though the specific instance/date reference is marginally less useful than general guidance would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists and none is needed since annotations cover the safety profile and the description sets expectations about empty results. It is complete enough to call correctly, with only the relationship to sibling indicator tools left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (limit, query, passed, indicator, display_value) are already documented in the schema. The description adds nothing about parameter meaning or interaction, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (Indicator Results / sn_grc_indicator_result), and clarifies what the records are: 'individual pass/fail collection events for an Indicator.' It is clearly a listing tool for that child table, though it does not explicitly contrast with the sibling get_indicator_result or the GRC indicator tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note that it is 'included for instances where indicator collection has run' implies when it will yield data, and the emptiness caveat is a helpful usage signal. However, it never states when to prefer this over get_indicator_result or list_grc_indicators, leaving selection between siblings to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_instancesARead-onlyIdempotent
List all configured ServiceNow instances (multi-instance / multi-customer support)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, which convey safety and idempotency. The description adds transparency about multi-instance support, enriching the behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the tool's purpose without any wasted words. It earns its keep efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of annotations, the description provides adequate context. The lack of output format details is acceptable for a basic list tool, though it could briefly mention what each instance entry includes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema description coverage, the description does not need to add parameter meaning. Baseline of 3 is appropriate as no additional semantic value is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'List' and resource 'all configured ServiceNow instances', with explicit mention of multi-instance/multi-customer support. There is no sibling tool with a similar name, so no need for differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates usage for retrieving a full list of instances. While it doesn't explicitly compare to alternatives, the tool's purpose is straightforward and no guidance is missing given its simplicity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_implementationsARead-onlyIdempotent
List configured integration implementations/instances (sn_sec_int_impl) — the operational units that carry the active flag, default flag and validation status. Use this to see which feeds are actually enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 50, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| active | No | Filter by active state | |
| display_value | No | Return human-readable reference/choice values (true) or both raw and display ("all") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint, so the safety profile is covered. The description adds genuine domain context beyond that: it defines the record type as the operational unit that carries the active flag, default flag and validation status, which tells the agent what state it will see in results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: entity plus table first, then the use case. No filler, no restatement of the tool name, and the most actionable guidance comes last where it is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with a fully documented schema and no output schema, the definition covers entity identity and purpose adequately. The only gap is the unstated relationship to the sibling integration tools (definitions vs. runs vs. parameters).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, query, active and display_value are fully documented in the schema. The description adds no further parameter meaning (e.g., how 'active' interacts with the default flag), so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List configured integration implementations/instances') and names the underlying table (sn_sec_int_impl), so an agent knows exactly what entity is returned. It does not explicitly distinguish itself from the nearby list_integrations sibling, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to see which feeds are actually enabled' gives one concrete motivating scenario, which is real guidance. However, it never names the alternative siblings (list_integrations, list_integration_runs, set_integration_active), so the agent must infer when to pick this tool over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_logsARead-onlyIdempotent
List integration log entries (sn_vul_integration_log) for troubleshooting — error and recommendation messages, optionally scoped to a single run. Ordered newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Log type filter, e.g. "error", "warning", "info" | |
| limit | No | Max records (default: 50, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| category | No | Log category filter | |
| integration_run | No | Filter to a single run (sys_id of sn_vul_integration_run) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the lower bar applies; the description still adds real value by disclosing ordering ('newest first') and the message types returned. It says nothing about volume/pagination behavior beyond the schema's limit or about completeness of the log set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, no filler. The table name and ordering note are compact and each clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Five optional parameters, full schema coverage, and annotations covering the safety profile mean the description only needs to add orientation, which it does. Minor gaps: no note on what happens with very large result sets and no hint that there is no output schema, so return shape is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters; baseline 3 applies. The description only adds marginal meaning, noting that results can be scoped to one run and hinting that 'recommendation' messages exist beyond the schema's type examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus the underlying table (sn_vul_integration_log) and the scope ('optionally scoped to a single run'), which separates it from list_integration_runs and get_integration_run. It stops short of naming those siblings explicitly, so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for troubleshooting' gives a clear use context, and the run-scoping note hints at the typical debug workflow. However, there is no explicit when-not guidance and no named alternative (e.g., list_integration_runs for run summaries), so routing is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_parametersARead-onlyIdempotent
List USEM/VR integration parameters. scope="definition" returns the parameter catalog (sn_sec_int_config: label, type, mandatory, default) optionally filtered by integration; scope="instance" returns the configured values per implementation (sn_sec_int_impl_config). Secret-like values (passwords, tokens, API keys) are masked and encrypted password_value columns are never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 100, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| scope | Yes | definition = parameter catalog per integration; instance = configured values per implementation | |
| integration | No | Filter definitions by integration sys_id (scope=definition) | |
| implementation | No | Filter values by implementation sys_id (scope=instance) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuinely new behavior: secret-like values are masked and encrypted password_value columns are never returned, which is critical for an agent reasoning about output contents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then explains both scopes and the masking behavior in a compact, well-ordered way. Dense but every clause carries information; no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema coverage and annotations already covering the safety profile, the description supplies the remaining needed context: the two scope modes, their backing tables, and the masking guarantee. No output schema exists, yet return contents are adequately conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, establishing a baseline of 3. The description goes beyond the schema by explaining what each scope actually returns (catalog columns vs configured values) and that integration/implementation filtering is optional, adding real semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List USEM/VR integration parameters') and immediately disambiguates the two operational modes by naming the underlying tables (sn_sec_int_config vs sn_sec_int_impl_config). An agent can distinguish this from siblings like list_integration_implementations or list_integrations without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly maps scope='definition' to the catalog and scope='instance' to configured values, giving strong context for choosing behavior. It does not, however, name sibling alternatives (e.g. list_integration_implementations) or state when to prefer them, so it falls short of explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_runsARead-onlyIdempotent
List Vulnerability Integration Runs (sn_vul_integration_run) with detail. Filter by source (e.g. "NVD"), state, substate ("success"/"failed"), or a recent day window. Ordered newest first. For a quick health rollup use get_integration_health instead.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Only runs started within the last N days (1-365) | |
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| state | No | Run state filter, e.g. "complete" | |
| source | No | Integration source filter, e.g. "NVD", "Qualys" | |
| substate | No | Run substate filter, e.g. "success" or "failed" | |
| display_value | No | Return human-readable reference/choice values (true) or both raw and display ("all") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), and the description adds a genuine behavioral trait beyond them: results are ordered newest first. It does not disclose result volume expectations or what 'with detail' means in terms of returned fields, but that gap is modest given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the resource and table, then filters, then ordering, then the alternative. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, all-optional read tool with no output schema, the description covers filtering, default ordering, and the sibling alternative. It leaves the meaning of 'with detail' and interaction between filters implicit, but an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, and the description's examples ("NVD", "success"/"failed", day window) largely restate schema text. It adds no new syntax or semantics such as how days interacts with state/substate or how the raw query parameter composes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus the underlying table (sn_vul_integration_run), and names the exact facets it can filter on. It also declares result ordering (newest first), which lets an agent distinguish it from sibling integration tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to get_integration_health for a quick health rollup, giving a clear alternative with the condition that selects it. It does not clarify the boundary with get_integration_run (single run detail) or list_integration_logs, which a sibling-aware agent would also want to resolve.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integrationsARead-onlyIdempotent
List the USEM/VR integration catalog (sn_sec_int_integration) — the available security data feeds such as NVD, Qualys, Tenable, Red Hat. Returns name, id, source and type.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 50, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety and idempotency profile is covered. The description adds useful return fields (name, id, source, type), but does not discuss pagination behavior, limits beyond the schema, or any external-feed caveats relevant to openWorldHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the catalog scope first, then examples, then return fields. Every sentence contributes useful information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with annotations covering safety and idempotency, the description supplies the key missing context: the table, examples, and returned fields. The parameter schema is fully documented, and the description is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both limit and query are already documented in the input schema. The description adds no parameter-level meaning beyond what the schema provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'List the USEM/VR integration catalog (sn_sec_int_integration)' and adds concrete examples like NVD, Qualys, Tenable, and Red Hat. It distinguishes this from configured integration implementations by calling it a catalog of available feeds, though it does not explicitly name the sibling tools it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by framing the tool as a catalog of available security data feeds, but it does not state when to prefer it over list_integration_implementations, list_integration_runs, or other integration-related siblings. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_job_run_historyARead-onlyIdempotent
Read scheduler history aggregates by job classification and time window (sys_scheduler_job_history), not individual job success/failure logs. job_sys_id and status filters are unsupported.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max aggregate rows (default: 25), not execution count | |
| job_classification | No | Exact scheduler classification (not a sysauto sys_id). Omit to list all classifications. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds real behavioral context — that results are aggregates rather than per-execution records and that some filters are rejected — but it never says what is aggregated (counts, durations, failures?) nor what a returned row looks like, and there is no output schema to fill that gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the operation and immediately followed by the key disambiguation. Little waste, though the unsupported 'time window' claim is a sentence fragment of misinformation that a tighter phrasing would have avoided.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only aggregate tool with no output schema, the description should clarify what the aggregates contain; it only says 'aggregates' and leaves return shape unknown. The unbacked time-window claim further weakens completeness, though the core read/aggregate distinction and unsupported-filter warnings are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are well documented, so the baseline is 3. The description contributes by warning that job_sys_id and status cannot be passed, but it also claims a 'time window' dimension that has no corresponding parameter, which can lead an agent to search for a nonexistent argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read scheduler history aggregates'), names the backing table (sys_scheduler_job_history), and explicitly contrasts with individual job success/failure logs, so it is distinguishable from list_scheduled_jobs and log-oriented siblings. However, it advertises grouping 'by job classification and time window' when the schema exposes no time-window parameter, leaving the stated scope partly unsupported.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-not guidance ('not individual job success/failure logs') and pre-empts two common but unsupported filters (job_sys_id, status), which is genuinely useful routing information. It stops short of naming the sibling tool an agent should use instead for per-job execution detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_knowledge_basesBRead-onlyIdempotent
List all knowledge bases available in the instance
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, which cover the main behavioral traits. The description adds no further behavioral details (e.g., pagination, ordering, or data freshness), but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant words. It clearly conveys the tool's purpose in a minimal yet complete manner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema, and annotations present), the description sufficiently explains what the tool does. However, it does not mention the response structure or whether it returns full objects or just identifiers, which could be useful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the only parameter 'limit', with a clear description. The tool description does not add additional meaning beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and the resource (knowledge bases). It distinguishes this tool from similar list tools by specifying 'all knowledge bases available in the instance', but does not explicitly differentiate from sibling tools like 'search_knowledge'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as 'search_knowledge' or 'get_knowledge_article'. The description only states the function without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_license_positionsARead-onlyIdempotent
List SAM Pro effective license position (ELP) records — owned vs. used rights per product
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| product | No | Filter by product name | |
| publisher | No | Filter by publisher name | |
| over_licensed_only | No | Only positions with unused rights / potential savings > 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety and repeatability profile is covered structurally. The description adds useful context that the payload is per-product owned-vs-used rights, but says nothing about default page size, pagination, or result limits — behavior the agent must discover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the resource first and the record shape second, with zero filler. Nothing to trim and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, fully-annotated, read-only list tool with complete schema coverage and no output schema, the description covers purpose and payload semantics adequately. Only pagination/return-size expectations are unaddressed, which is a minor gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (limit, product, publisher, over_licensed_only) are documented in the schema, and the baseline is 3. The description's 'owned vs. used rights' phrasing lightly contextualizes over_licensed_only ('unused rights') but adds no filtering syntax or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List SAM Pro effective license position (ELP) records') and clarifies what a record contains ('owned vs. used rights per product'). It is clearly distinct from mutation siblings, though it never explicitly contrasts with closely related read tools like get_license_position_summary or get_license_compliance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the resource name — an agent can infer 'use this to enumerate ELP records', but there is no explicit when-to-use, when-not-to-use, or named alternative among the many license/compliance siblings. No prerequisites or scope caveats are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mid_extension_contextsARead-onlyIdempotent
List MID Server extension contexts (ecc_agent_ext_context) — e.g. MID Web Server, ACC Websocket Endpoint — with status and error_message. Key for troubleshooting ACC listener setup: a missing "ACC Websocket Endpoint" context means agents get handshake 404s.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| status | No | Filter by status (e.g. "Started", "Stopped", "Error") | |
| extension | No | Filter by extension name (contains match, e.g. "Websocket", "Web Server") | |
| mid_server | No | Filter by MID Server name or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so safety and repeatability are covered. The description adds useful diagnostic context: it returns status and error_message, and a missing ACC Websocket Endpoint context explains 404 handshakes. It does not mention pagination, auth, or rate limits, but those are secondary here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the specific resource and examples, followed by the troubleshooting rationale. Every sentence adds value and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description names the key returned fields (status and error_message) and explains the diagnostic interpretation. The input filters are fully documented in the schema. Pagination behavior is only covered by the schema's limit default, so it is not fully complete but is adequate for this list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four optional filters (limit, status, extension, mid_server) are already well documented in the schema. The description does not add filter syntax or matching semantics beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ("List MID Server extension contexts"), names the underlying table (ecc_agent_ext_context), gives concrete examples, and says what fields are returned. An agent can distinguish this from generic MID Server or ACC agent listing tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the primary use case: troubleshooting ACC listener setup, especially when agents get handshake 404s due to a missing "ACC Websocket Endpoint" context. It does not explicitly name alternatives or when-not-to-use conditions, so it falls 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.
list_mid_server_issuesBRead-onlyIdempotent
List MID Server issues (ecc_agent_issue) — detected problems with source, occurrence count, and last-detected time
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| state | No | Filter by issue state (e.g. "New", "Resolved") | |
| mid_server | No | Filter by MID Server name or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds context about what issue data is returned, but does not disclose pagination behavior, result ordering, or any operational constraints beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no redundant or filler content. It efficiently states the resource, underlying table, and key fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, read-only list tool with fully described optional parameters and safety annotations, the description is largely complete. It names the key return fields despite there being no output schema, though it could mention result ordering or pagination behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents limit, state, and mid_server. The description does not add meaning about parameter behavior or filtering semantics beyond what is already in the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: list MID Server issues, explicitly identifies the underlying table ecc_agent_issue, and names the issue fields returned. It is clearly different from sibling tools like list_mid_servers, though it does not explicitly contrast itself with get_mid_server_health or list_ecc_queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as get_mid_server_health or list_ecc_queue, nor any exclusions or prerequisites. Usage is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mid_serversARead-onlyIdempotent
List MID servers and verify they are healthy
| Name | Required | Description | Default |
|---|---|---|---|
| active_only | No | Only show servers with status "Up" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is read-only, idempotent, and open-world. The description adds the 'verify they are healthy' aspect, providing extra context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It could be slightly improved by front-loading the verification aspect, but it is still effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool and the rich annotations, the description is complete enough. It conveys the purpose and additional behavior (health check) without needing an output schema reference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for parameters is 100%, so the description does not need to add meaning. The description does not mention the 'active_only' parameter, but the schema describes it adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and resource (MID servers), and adds the verification of health, distinguishing it from other list tools among many siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used to list MID servers and check their health, but provides no explicit guidance on when to use it versus 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_mobile_app_configsBRead-onlyIdempotent
List sys_sg_mobile_application definitions, not installed client usage. This model has no active column.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and open-world behavior, so the safety profile is covered structurally. The description adds one genuinely useful schema fact — 'This model has no active column' — which warns the agent off a filter that would otherwise seem natural, but it says nothing about result size, pagination, or why an open-world hint applies to a static table.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the positive identification comes before the exclusion. Every clause carries information the agent cannot get from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with a single integer parameter the description covers identity and one schema quirk, which is close to sufficient. Missing are pagination semantics for 'limit' and any sense of what a returned definition contains — gaps that matter because there is no output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the sole parameter 'limit', and the description does not mention it at all. It does not state the default page size, whether the result is truncated at the 1000 maximum, or how to page beyond it — notable given there is no offset/cursor parameter to pair with limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List sys_sg_mobile_application definitions') and explicitly scopes out an adjacent concept ('not installed client usage'), which is a real disambiguation need given siblings like list_acc_agents and get_mobile_app_config. It never names a sibling tool, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The negation 'not installed client usage' functions as an implicit when-not, but there is no positive trigger condition and no routing to get_mobile_app_config (single config) or list_mobile_applets, both plausible alternatives in this sibling set. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mobile_appletsBRead-onlyIdempotent
List native sys_sg_screen metadata. Historical applet name retained; scope is an application scope, not a mobile application ID.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| scope | No | Application scope sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so safety is covered. The description adds naming/legacy caveats but says nothing about pagination (limit max 1000, no default stated) or what the returned metadata contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource, no filler. The legacy-name caveat earns its place by preventing a wrong assumption.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A lightweight read-only list tool with no output schema, so the description needn't document returns, but it omits any hint of what sys_sg_screen metadata fields are, whether results are paginated, or what happens with no scope given.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'scope' is documented, 'limit' is not. The description usefully disambiguates scope ('application scope, not a mobile application ID'), which is real added meaning, but it leaves limit's default and paging behavior unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('List native sys_sg_screen metadata'), but sys_sg_screen is internal jargon and the description doesn't relate it to the mobile-applet concept the tool name advertises. It also does not differentiate from siblings like list_mobile_app_configs or list_mobile_layouts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied (the 'applet' name is historical, scope is an application scope). No explicit when-to-use or when-to-prefer-another-tool guidance, and the sibling family is large enough that omission matters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mobile_layoutsCRead-onlyIdempotent
List sys_sg_screen_m2m_ui_element mappings, not complete mobile layout definitions. Historical tool name retained.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| screen_sys_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety is covered. The description adds the important caveat that results are mapping rows rather than complete layout definitions and explains the historical name, but it omits pagination behavior and what the mappings contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the critical semantic caveat front-loaded. The naming note is short and earns its place; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description corrects the misleading name and states that the tool returns mapping rows, which is important. However, with no output schema and zero parameter descriptions, it leaves material gaps about what fields are returned and how screen_sys_id scopes the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description never mentions either parameter. An agent cannot tell from the definition whether screen_sys_id filters results or what limit defaults to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('List') and a precise resource ('sys_sg_screen_m2m_ui_element mappings'), and explicitly disambiguates the misleading tool name from full mobile layout definitions. It does not name a sibling alternative, but an agent can tell what this tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, prerequisites, or named alternative. The caveat that these are not complete layout definitions implies create_mobile_layout may be relevant, but the agent must infer that routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_tasksARead-onlyIdempotent
List tasks assigned to the currently configured user
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max tasks to return (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, indicating a safe, idempotent operation. The description adds the user scope constraint but does not disclose further behavioral traits such as pagination, ordering, or error handling. Since annotations cover the safety profile, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 11 words, extremely concise and front-loaded. Every word carries meaning, and there is no fluff or repetition. It sets a high standard for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and no output schema. The description adequately covers the core functionality. However, it could mention default behavior for limit or ordering, but given the simplicity, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, with the 'limit' parameter already described. The tool description does not add any additional meaning beyond what the schema provides. According to the guidelines, when schema_description_coverage is high, baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'list', the resource 'tasks', and the scope 'assigned to the currently configured user'. It distinguishes this tool from siblings like 'list_approvals' or 'list_change_requests' which list different entities. The tool name 'list_my_tasks' reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that it is for the current user's tasks but does not explicitly state when to use this tool versus alternatives like 'list_scrum_tasks' or 'list_hr_tasks'. No when-not or alternative tool references are provided, leaving reliance on the tool name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notificationsARead-onlyIdempotent
List email notification definitions (sysevent_email_action)
| Name | Required | Description | Default |
|---|---|---|---|
| event | No | Filter by event trigger name | |
| limit | No | Max records to return (default 25) | |
| query | No | Search notifications by name | |
| table | No | Filter by target table (e.g. "incident") | |
| active | No | Filter to active notifications only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and repeatability. The description adds the context that it lists definitions from a specific table, which is valuable. No behavioral traits are omitted or contradicted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the core action and resource. Every word earns its place, with no unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the essential purpose and table, it lacks details about the return format (e.g., an array of definitions) and any default behavior. Given the simple nature of a list tool, this is adequate but could be more complete to help the agent interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for all 5 parameters (100% coverage), so the baseline is 3. The description adds no additional meaning beyond the schema, but it does not hinder understanding either.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List email notification definitions (sysevent_email_action)' clearly states the action (list) and the specific resource (email notification definitions, with the underlying table name). It is precise and distinguishes from siblings like 'list_notification_subscriptions' and 'get_notification'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives (e.g., get_notification for a single notification, list_notification_subscriptions for subscriptions). There is no mention of when-not-to-use or prerequisites, leaving the agent to infer usage entirely from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notification_subscriptionsARead-onlyIdempotent
List user subscriptions to notifications (who has opted in/out)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| user_sys_id | No | User sys_id to list their subscriptions | |
| notification_sys_id | No | Filter by specific notification |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, indicating a safe, read-only operation. The description adds 'who has opted in/out' but does not go beyond annotations in disclosing behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with nine words, front-loaded with the verb 'List'. It efficiently conveys the purpose without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (listing with optional filters), good annotations, and no output schema, the description is mostly adequate. It could mention pagination details but openWorldHint covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptions in the schema (100% coverage). The description does not add extra meaning beyond what the schema provides, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'user subscriptions to notifications', and the context 'who has opted in/out', which distinguishes it from sibling tools like 'list_notifications'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives (e.g., 'list_notifications', 'get_notification'). There is no mention of when not to use it or recommended alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_nvd_entriesARead-onlyIdempotent
List NVD entries (sn_vul_nvd_entry). Filter by CVE id substring or minimum CVSS v3 base score.
| Name | Required | Description | Default |
|---|---|---|---|
| cve | No | CVE id or substring (matched with LIKE), e.g. "CVE-2018" or "2018-1002203" | |
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| score_min | No | Only return entries with v3_base_score >= this value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower. The description adds no operational detail beyond filtering—no mention of pagination behavior, default ordering, or result limits beyond what the schema's 'limit' field already states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that identifies the resource, the table, and the two primary filters. Every clause carries information; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple filtered-list tool with full schema coverage and rich read-only annotations, the core calling information is present. However, it omits routing against the obvious sibling get_nvd_entry_by_cve and gives no hint about return shape or ordering, leaving a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (cve, limit, query, score_min) are already well documented. The description restates two of them (CVE substring, minimum CVSS v3 score) without adding syntax, matching semantics, or interaction rules beyond the schema—baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List NVD entries") and even names the backing table (sn_vul_nvd_entry), plus the two filtering dimensions. It does not explicitly distinguish itself from the closely related sibling get_nvd_entry_by_cve, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the word "List" plus filter options suggests bulk/exploratory retrieval rather than single-record lookup, but the description never names get_nvd_entry_by_cve as the alternative for fetching one specific CVE. An agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_oauth_applicationsARead-onlyIdempotent
List OAuth application registry entries (client applications that can authenticate)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search by name or client ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds minor context (registry entries, authentication). It does not detail pagination, ordering, or any additional behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and good annotations, the description is adequate. However, it lacks information about return format (e.g., fields, pagination) and might benefit from mentioning that it lists all OAuth applications by default.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter descriptions in the schema are sufficient. The description does not add extra meaning beyond what the schema provides (query as search by name/client ID, limit as max records).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists OAuth application registry entries, specifying what is listed (client applications that can authenticate). The name and description are specific enough to distinguish from sibling list tools like list_acls or list_assets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. There is no mention of context, prerequisites, or when not to use it. The description only states what it does without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pa_breakdownsARead-onlyIdempotent
List PA breakdowns (dimensions) available for segmenting indicator data
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search breakdowns by name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and idempotency. The description adds context about segmenting indicator data but does not disclose additional behavioral traits like pagination, return format, or rate limits. It meets the minimum but adds limited value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence that is front-loaded with the verb 'List'. It conveys the core purpose without any extraneous words, achieving maximum conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with two optional parameters and no output schema, the description states the purpose but omits details about the return format, pagination behavior, or what information the breakdowns contain. It is adequate but not fully complete for an agent that needs to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters (query and limit). The description does not add any extra meaning or usage context beyond what the schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and resource 'PA breakdowns (dimensions)', and adds context 'available for segmenting indicator data', which clearly differentiates it from sibling tools that list other PA entities like indicators or dashboards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention exclusions or preconditions. With many similar list tools in the sibling list, explicit usage guidelines would be beneficial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pa_dashboardsBRead-onlyIdempotent
List Performance Analytics dashboards
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search dashboards by name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds no behavioral context beyond what the schema provides (e.g., default limit). It does not detail response structure or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it is under-specified for effective tool selection. It could include brief usage context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional params, no output schema) and rich annotations, the description is minimally adequate. However, it fails to leverage context signals like openWorldHint to clarify that all dashboards are returned regardless of user permissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters with clear descriptions (query for name search, limit for max records). The description adds no additional semantics beyond the schema, which is already well-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'Performance Analytics dashboards', distinguishing it from other list tools targeting different resources (e.g., list_pa_indicators). However, it lacks specifics on scope like user-specific vs. all dashboards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_pa_dashboard or other list tools. There is no mention of when to apply the query filter or how pagination works.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pa_indicatorsARead-onlyIdempotent
List Performance Analytics (PA) indicators (KPIs) available in the instance
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| query | No | Search indicators by name or description | |
| active | No | Filter to active indicators only (default true) | |
| category | No | Filter by indicator category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and open-world behavior. The description adds no further behavioral details beyond stating the resource, which is adequate but not additional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the tool's purpose with no unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description and schema cover basic usage, there is no mention of return format, pagination behavior, or that it returns a list of objects. This could be improved for a more complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters have explicit descriptions in the schema (100% coverage), so the description adds no extra meaning or usage details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource as 'Performance Analytics (PA) indicators (KPIs)', clearly differentiating this tool from sibling tools like 'list_pa_breakdowns' or 'list_pa_dashboards'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'get_pa_indicator' or other list tools. The description implies usage for browsing all indicators but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pa_jobsCRead-onlyIdempotent
List Performance Analytics data collection jobs and their schedules
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search by name | |
| active | No | Filter to active jobs only (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, indicating a safe, idempotent read operation. The description adds no behavioral context beyond stating it lists jobs and schedules. It does not disclose default pagination (limit=25), sorting order, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded, communicating the core purpose immediately. It avoids fluff, but could include more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three optional parameters and no output schema, the description should provide more context about return format, default values, or the nature of 'schedules'. It is incomplete for a tool that might return a list with scheduling details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with all three parameters (active, query, limit) having descriptions. The tool description does not add extra meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Performance Analytics data collection jobs and their schedules. It uses a specific verb 'List' and a resource, which is enough to indicate the action. However, it does not explicitly distinguish from sibling tools like 'get_pa_job' or 'list_job_run_history', though the naming convention implies a listing action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_pa_job' for a specific job or 'list_job_run_history' for job execution history. No prerequisites or context about when to apply filters are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_policy_exceptionsBRead-onlyIdempotent
List Policy Exceptions (sn_compliance_policy_exception). Filter by state.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| state | No | State filter. Single value or comma-separated list: 1=New, 2=Analyze, 10=Risk Assessment, 12=Review, 6=Awaiting Approval, 8=Approved, 7=Rejected, 3=Closed | |
| policy | No | Filter by related Policy sys_id | |
| display_value | No | Return human-readable reference values (true) or both ("all") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds only the table name and a state-filter note; it says nothing about pagination behavior, ordering, or whether an unfiltered call returns every state — relevant given the limit default of 25 against a potentially large table.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short fragments with no filler, and the resource identity is front-loaded before the filter hint. It is efficient, though the terseness borders on under-specification for a tool with five parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with a fully documented schema and no output schema, the description covers the essentials but omits default list behavior (what an unfiltered call returns), pagination expectations, and how the raw query parameter interacts with state. These gaps are modest but real for an agent composing calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters — including the state enum mapping, limit bounds, and raw encoded query — are already documented in the schema. The description's only parameter note ('Filter by state') restates the schema rather than adding syntax or interaction semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (List Policy Exceptions) and names the backing table (sn_compliance_policy_exception), which disambiguates it from compliance-policy and GRC siblings. It does not explicitly contrast with the sibling get_policy_exception, but the list-vs-get naming plus the table hint makes the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by state' hints at a narrowing option but gives no context on when to use this tool versus get_policy_exception for a single record or list_compliance_policies for the parent policies. There are no exclusions, prerequisites, or alternatives named, so the agent must infer routing from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_portal_pagesARead-onlyIdempotent
List pages that belong to a Service Portal
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| query | No | Filter pages by title or id | |
| portal_sys_id | Yes | sys_id of the parent portal |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. Description adds only that it lists pages, but does not explain pagination, error handling, or permissions beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is direct and front-loaded. No extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 required parameters, no output schema), the description adequately conveys purpose. However, it could mention return structure or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and all parameters are described in the schema. Description adds no additional meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists pages belonging to a Service Portal, uses specific verb and resource, and is distinguishable from sibling tools like get_portal_page and create_portal_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. Usage is implied for listing pages under a portal, but alternatives like get_portal_page are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_portalsARead-onlyIdempotent
List all Service Portal configurations available in the instance
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search portals by title or url_suffix |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, indicating a safe, idempotent read operation. The description does not add any behavioral details beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 10 words, containing all necessary information without any fluff. It is efficiently written and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two fully described parameters and clear annotations, the description is mostly complete. It could be slightly improved by mentioning what fields are returned, but this is not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (query, limit) have descriptions in the input schema with 100% coverage. The description does not add any additional meaning or context for the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list', the resource 'Service Portal configurations', and the scope 'available in the instance'. It is specific and distinguishes from sibling tools like list_portal_pages or list_portal_themes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates this tool is for listing portal configurations, which implies usage for general portal enumeration. However, it does not explicitly state when not to use it or provide alternatives, though sibling names help clarify boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_portal_themesARead-onlyIdempotent
List Service Portal themes (color palettes, CSS variables)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds minimal behavioral insight beyond stating the resource type (color palettes, CSS variables). It does not disclose pagination, default limit, or response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description is reasonably complete. It specifies what is listed and the type of data. However, it could mention that the listing is unfiltered (consistent with openWorldHint) or include default limit info.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a self-explanatory parameter 'limit'. The description does not add any meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Service Portal themes (color palettes, CSS variables)' clearly states the action (list) and the resource (Service Portal themes), with additional detail on the content (color palettes, CSS variables). It effectively distinguishes from siblings like 'get_portal_theme' and 'list_portals'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit usage guidelines are provided. The description does not specify when to use this tool over alternatives, nor does it mention any prerequisites or typical scenarios. The context is implied by the tool name but could be improved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_portal_widgetsARead-onlyIdempotent
List Service Portal widgets with optional search by name or category
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| query | No | Search widgets by name or description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, so description adds limited behavioral context. It mentions optional search and limit but does not disclose default limit, pagination, or return format. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundancy, information is front-loaded. Every word contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simplicity, clear schema, and annotations, description is fairly complete. Lack of output schema explanation is acceptable for a listing tool. Minor gap: could mention typical return fields, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters at 100% coverage. Description adds slight value by specifying 'name or category' for query, aligning with schema's 'name or description' but not providing further syntax or constraints. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'List' and resource 'Service Portal widgets', clearly distinguishing from siblings like get_portal_widget (single) and create_portal_widget. It mentions optional search capabilities, adding specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage context (listing/searching widgets) but does not explicitly state when to use vs alternatives like get_portal_widget or other list tools. No 'when not to use' or alternative tool names provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_process_automationsCRead-onlyIdempotent
List Process Automation Designer playbooks and processes
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| query | No | Search by internal name, display label, or description | |
| active | No | Filter to active processes only (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds nothing beyond that: it doesn't mention pagination behavior from limit, that inactive processes are hidden by default, or the ordering/shape of results — all of which matter for a list operation over an open-world collection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is efficient, though its brevity comes at the cost of the detail missing in the other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and three fully documented parameters, the minimum needed to call the tool is present. What's absent is result-shape context — whether the response mixes playbooks and processes, and how default filtering affects the returned set — leaving the agent to discover this at call time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, query and active are already self-documented, and the baseline of 3 applies. The description does not add any meaning beyond the schema — notably it doesn't warn that active defaults to true and therefore suppresses inactive processes unless explicitly set to false.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and a named resource domain (Process Automation Designer playbooks and processes), which distinguishes it from the sibling get_process_automation (single-record fetch). However, it leaves ambiguous whether playbooks and processes are returned in one merged list or are two distinct entity types, and it doesn't differentiate from list_flows / list_subflows, which are adjacent automation concepts in the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_process_automation for a single record or list_flows for flow definitions. The agent must infer selection purely 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.
list_property_categoriesARead-onlyIdempotent
List all unique property categories with their record counts
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, which cover safety and idempotency. The description adds that it returns categories with counts, but does not disclose any additional behavioral traits beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It is front-loaded with the purpose and requires no additional structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with no parameters and clear annotations, the description is adequate. However, it lacks detail on the format of 'record counts' and does not provide output schema, leaving some room for ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description does not need to add parameter information. Baseline score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'all unique property categories with their record counts'. It is specific and distinguishes this tool from other list tools by focusing on property categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternative list tools. Among many sibling list tools, there is no explicit context for when to use list_property_categories or when to avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_relationshipsARead-onlyIdempotent
Show parent and child relationships for a CI
| Name | Required | Description | Default |
|---|---|---|---|
| ci_sys_id | Yes | System ID of the CI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, openWorldHint) provide safety and idempotency info. The description adds no behavioral details beyond the basic action, such as auth requirements or error handling. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and low parameter count, the description is minimally complete for a simple list operation. However, it does not describe the return format (e.g., array of objects) or potential edge cases, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage (one parameter with description). The description does not add any extra meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Show parent and child relationships for a CI'. It uses a specific verb 'Show' and resource 'relationships for a CI', distinguishing it from sibling list tools like list_acls or list_assets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. For example, it does not mention that get_cmdb_ci or create_ci_relationship might be relevant. No explicit or implied usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_remediation_slaARead-onlyIdempotent
List the SLA (Time-To-Remediate) status of Vulnerable Items, Remediation Tasks, or Vulnerability Groups. Filter by ttr_status (no_target/in_flight/approaching/past_due/target_met), breaches only, an upcoming-due window, or assignment group. Ordered by soonest target date.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| ttr_status | No | Filter by TTR status — single value or comma list (no_target,in_flight,approaching,past_due,target_met) | |
| record_type | Yes | Record family: vi (Vulnerable Item), rt (Remediation Task, sn_vul_remediation_task), or vg (Vulnerability Group / task-based Remediation Task, sn_vul_vulnerability) | |
| breached_only | No | Shortcut for ttr_status=past_due | |
| display_value | No | Return human-readable reference/choice values (true) or both raw and display ("all") | |
| due_within_days | No | Only items whose target date falls within the next N days (1-365) | |
| assignment_group | No | Filter by assignment group sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds useful behavioral context: results are ordered by soonest target date, and several filter shortcuts such as breaches only and upcoming-due windows are described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two front-loaded sentences with no wasted text. It states the purpose first, then lists the filtering modes and ordering behavior efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 100% schema coverage and read-only annotations, the description is nearly complete for calling the tool. It omits explicit return-shape and pagination details, but the absence of an output schema and the presence of schema-documented limit/query parameters make this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter. The description reinforces the main filters in natural language, including ttr_status values, breached-only filtering, due windows, and assignment group, but adds little syntax or detail beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: listing SLA (Time-To-Remediate) status for Vulnerable Items, Remediation Tasks, or Vulnerability Groups. It clearly distinguishes this reporting view from sibling tools such as list_remediation_tasks or list_vulnerable_items by centering on SLA status and target-date ordering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains the available filtering modes and the ordering behavior, which gives an agent enough context to use the tool correctly. It does not explicitly state when to prefer get_remediation_sla or get_group_sla instead, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_remediation_task_findingsARead-onlyIdempotent
List the VI ↔ Remediation Task links in the "Remediation Task Item" m2m (sn_vul_m2m_vul_group_item). Give remediation_task (VUL number or sys_id of the sn_vul_vulnerability group) to list its member Vulnerable Items, or vulnerable_item (VIT number or sys_id) to list the Remediation Tasks it belongs to. Exactly one of the two.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| vulnerable_item | No | Vulnerable Item: VIT number (VITxxxxxxx) or 32-char sys_id | |
| remediation_task | No | Remediation Task / group: VUL number (VULxxxxxxx) or 32-char sys_id (sn_vul_vulnerability) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, so the safety burden is light. The description adds the useful behavioral constraint that exactly one key parameter must be supplied, but says nothing about pagination behavior, default 25-row cap, or what a returned link row contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: the resource and backing table come first, then each parameter's effect, then the exclusivity rule. No filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read tool with full schema coverage and annotations, the description covers purpose, both argument modes, and the mutual-exclusivity constraint. The remaining gap is output shape (which link fields come back), which matters slightly since there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema by spelling out the relationship direction each parameter traverses (remediation_task → member VIs; vulnerable_item → parent Remediation Tasks). This tells an agent what to expect per argument, not just accepted ID formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: listing the VI ↔ Remediation Task links in the sn_vul_m2m_vul_group_item m2m table. That is clearly distinct from list_vulnerable_items, list_remediation_tasks, and add_vi_to_remediation_task, though none of those siblings are named for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains both query directions explicitly – pass remediation_task to get member Vulnerable Items, or vulnerable_item to get the Remediation Tasks it belongs to – and constrains it with 'Exactly one of the two.' No guidance on when to prefer this over the plain list_* tools for the same entities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_remediation_tasksARead-onlyIdempotent
List USEM Remediation Tasks across BOTH backing tables: sn_vul_remediation_task and sn_vul_vulnerability (the task-based group the rule engine actually creates RTs in — sys_class label "Remediation Task", number prefix VUL). Each record carries a source_table marker. Filter by state or assignment group; ordered by descending risk score.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| state | No | State filter. Single value or comma-separated list. 1=Open, 2=Under Investigation, 10=Awaiting Implementation, 11=In Review, 12=Deferred, 101=Resolved, 3=Closed | |
| assigned_to | No | Filter by assignee sys_id | |
| display_value | No | Return human-readable reference/choice values (true) or both raw and display ("all") | |
| assignment_group | No | Filter by assignment group sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so safety is covered; the description adds real behavioral context the annotations cannot: the dual-table union (sn_vul_remediation_task plus sn_vul_vulnerability), where the rule engine actually creates records, and that ordering is by descending risk score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the dual-table caveat, then the source_table marker, then filtering/ordering. Dense but every clause carries information; the parenthetical sys_class/prefix detail is slightly heavy but justifies itself by disambiguating the table.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully discloses the source_table field and the risk-score ordering an agent will see in results. It stops short of describing result shape, pagination behavior, or what happens when the query param conflicts with the state filter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented including the state-code legend. The description only echoes that state and assignment_group are the primary filters and adds no syntax or format detail; baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List USEM Remediation Tasks') and uniquely explains that it spans two backing tables with a source_table marker, which is more than a restatement of the name. It does not name a sibling it is not, so an agent must still infer why list_vulnerable_items or get_remediation_task differ.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by state or assignment group; ordered by descending risk score' implies the intended usage context of pulling open remediation work, but there is no explicit when-to-use, no exclusion, and no pointer to alternatives such as get_remediation_task for a single record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_reportsARead-onlyIdempotent
List saved reports in the instance (latest release: /api/now/reporting)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| search | No | Search reports by name (uses sysparm_contains) | |
| category | No | Filter by report category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the agent knows this is a safe, read-only operation. The description only adds the API path, which is minor beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no waste, front-loading the action and including a relevant API note. It is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no output schema, the description is adequate but could mention return format or pagination. Given the low complexity and good annotations, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter described. The description adds no extra meaning beyond the schema, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists saved reports, with a specific verb and resource. It distinguishes itself from sibling list tools by targeting 'reports' and even mentions the API endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via example parameters (search, category, limit) but does not explicitly state when to use 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_request_itemsBRead-onlyIdempotent
List requested items (sc_req_item) for a given request or catalog item
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 20) | |
| stage | No | Filter by stage. request | approval | fulfillment | delivery | closed | |
| request_sysid | No | Parent sc_request sys_id — list items for this request | |
| cat_item_sysid | No | Catalog item sys_id — list all requests for this item |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, which the description supports implicitly. However, the description does not disclose pagination behavior (limit param default 20 is in schema only), return format, or behavior when both parameters are provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, concise sentence with no wasted words. Front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not describe the return value (e.g., list of sc_req_item records) or address edge cases like empty results or parameter combinations. The default limit of 20 is in schema but not explained in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal value by mentioning 'request or catalog item', which maps to the two sysid parameters, but does not enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'requested items (sc_req_item)', with scope 'for a given request or catalog item'. This distinguishes it from sibling tools like list_requests or list_catalog_items, but does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., list_requests, get_request_item). It does not specify when not to use or mention any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_requestsBRead-onlyIdempotent
List service catalog requests (sc_request). Supports filtering by state and requested_for user.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 20) | |
| query | No | Additional encoded query filter | |
| state | No | Filter by request state. 1=Open, 2=Closed Complete, 3=Closed Incomplete, 4=Closed Cancelled | |
| requested_for | No | sys_id or user_name of the user the request was made for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and openWorld. The description adds filtering context but does not disclose pagination behavior, rate limits, or default limit behavior, which are relevant for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, concise and front-loaded. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is brief but covers the core functionality. Missing details on pagination, output format, or behavior with no filters. Could be more complete given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already fully describes parameters. The description adds little beyond restating two filter options, not compensating for any gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists service catalog requests (sc_request) and mentions filtering capabilities. However, it does not differentiate itself from siblings like get_request or list_request_items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_request for a single request, list_request_items for items within a request). The description only mentions filtering support without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rest_message_functionsARead-onlyIdempotent
List HTTP methods (functions) defined within a REST Message
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| rest_message_sys_id | Yes | Parent REST Message sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, so the description does not need to repeat these. The description adds no further behavioral context beyond stating that it lists functions, which is already clear from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no unnecessary words. It is front-loaded with the purpose and is as concise as possible without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with well-annotated read-only behavior and clear parameters, the description is mostly complete. It could briefly mention the type of objects returned, but given the annotations and schema, it is sufficiently informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (rest_message_sys_id and limit). The description does not add parameter semantics beyond the schema, which is adequate. The schema already provides sufficient meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'HTTP methods (functions)', and the container 'within a REST Message'. It distinguishes effectively from sibling tools like 'list_rest_messages' and 'list_soap_message_functions'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by requiring a REST Message sys_id, which sets a clear context. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., 'list_rest_messages' or 'list_soap_message_functions') 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_rest_messagesARead-onlyIdempotent
List outbound REST Message configurations (integrations with external APIs)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search by name or description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, indicating safe, repeatable, and broad scope. The description adds context about the resource type ('outbound REST Message configurations'), which is helpful but does not disclose additional behavioral traits beyond what annotations suggest. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the core purpose efficiently. Every word adds value, no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with safe annotations and full schema coverage, the description is complete enough. It does not explicitly mention pagination or return format, but the limit parameter implies pagination. No output schema exists, so the description does not need to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (query, limit) with clear descriptions. The tool description does not add meaning beyond what the schema provides, which meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists outbound REST Message configurations, specifying 'integrations with external APIs'. This distinguishes it from sibling tools like get_rest_message (single retrieval) and list_rest_message_functions (different entity type).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing all REST Message configurations, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., get_rest_message for a single config, or list_rest_message_functions for functions). No exclusions or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_risk_criteriaARead-onlyIdempotent
List the Impact/Likelihood/Score scale (sn_risk_criteria) used by Risk records — 5 rows per type, ordered. Reference only: impact/likelihood/score are NOT settable via create_risk/update_risk (confirmed to be recalculated by a business rule regardless of client input) — use this tool to understand the scale a Risk's calculated values fall on, not to prepare a write.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter to one scale type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so safety is covered; the description goes well beyond them by disclosing a hidden behavioral fact — writes to these fields are silently overwritten by a business rule — which prevents a wasted or misleading write attempt. That is exactly the kind of non-obvious context only the description can supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the row/ordering detail are front-loaded, and the trailing cautionary clause carries real information. It is dense but the em-dash parenthetical is long enough to slightly strain readability; still, every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Single optional enum parameter, no nested objects, no output schema, read-only annotations — and the description covers what is returned (five ordered rows per scale type) plus the critical caveat about writability. Nothing needed to call or interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'type' parameter is already documented with an enum in the schema. The description's '5 rows per type' adds mild context about result shape per filter value but does not explain format or defaults beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('List the Impact/Likelihood/Score scale (sn_risk_criteria)') and adds concrete structure the agent can rely on: five rows per type, ordered. It is unmistakably distinct from list_risks, get_risk, or list_risk_statements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the intended purpose explicitly — reference only, to interpret a Risk's calculated values — and names the alternatives it should not be paired with ('NOT settable via create_risk/update_risk'), with the reason (business rule recalculates regardless of client input). That is a complete when-to-use / when-not-to-use / alternative routing instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_risksARead-onlyIdempotent
List Risks (sn_risk_risk) — the quantitative risk register entry. Filter by state, related Entity, or category. Ordered by most recently updated.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| state | No | State filter: draft, assess, review, respond, monitor, retired | |
| profile | No | Filter by related Entity sys_id (sn_grc_profile) | |
| category | No | Filter by risk category | |
| display_value | No | Return human-readable reference values (true) or both ("all") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds one genuinely new behavioral fact — results are ordered by most recently updated — but says nothing about the default page size or the 25/1000 limit ceiling, which matters for a list tool that could return thousands of rows.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the identity and table name front-loaded before the filtering and ordering facts. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema coverage, read-only annotations, and no output schema, an agent has nearly everything needed to call this correctly. The remaining gap is that ordering is mentioned but return shape and default result count are not, minor for a straightforward list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including limit, query, and display_value is already documented in the schema. The description restates three filters (state, entity, category) without adding syntax, value formats, or behavior beyond the schema, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource and pins it to the underlying table (sn_risk_risk), plus a scope qualifier ('quantitative risk register entry') that separates it from the sibling list_risk_statements and list_risk_criteria. It never explicitly says to use get_risk for a single record, so the differentiation from get_risk is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent it can filter by state, related Entity, or category, which implies the retrieval scenario, but it never states when to choose this over list_risk_statements, list_risk_criteria, or get_risk. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_risk_statementsBRead-onlyIdempotent
List the Risk Statement library (sn_risk_definition) — reusable risk descriptions referenced by Risk records.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by name (LIKE match) | |
| limit | No | Max records (default: 25, max: 1000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety is covered. The description adds genuinely useful domain context — that these are reusable descriptions referenced by Risk records — but says nothing about result shape, pagination, or whether the library is shared/customizable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero filler; the resource, table name, and referential role are packed in without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only list tool with full schema coverage and annotations covering safety, this is nearly sufficient. The only real gap is the absence of guidance on when to choose this versus get_risk_statement or list_risks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters documented inline (name LIKE match, limit default/max). The description adds no parameter-level semantics beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (List) and resource (Risk Statement library), and adds the underlying table (sn_risk_definition) plus the key relationship — reusable risk descriptions referenced by Risk records. This clearly separates it from the singular sibling get_risk_statement, though it never explicitly contrasts with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no routing to alternatives such as get_risk_statement (fetch one) or list_risks (list Risk records themselves). Usage is only implied by the plural verb 'List' and the 'library' framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scheduled_jobsARead-onlyIdempotent
List scheduled jobs and their run schedules
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| query | No | Additional filter | |
| active | No | Filter to active jobs only (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and idempotency. The description adds that it lists 'run schedules', but no additional behavioral traits like pagination, performance, or data freshness are disclosed. With strong annotations, the description provides minimal extra behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence without fluff. It could benefit from slightly more context (e.g., return format), but it is appropriately front-loaded and efficient for a simple listing tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not describe the return format. The tool is straightforward, but the description lacks details on response structure, pagination behavior, or default limit. Annotations provide some context but the description remains minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any meaning beyond what the input schema already provides for the three parameters (active, query, limit). The parameters are self-explanatory in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists scheduled jobs and their run schedules. The verb 'list' and resource 'scheduled jobs' are specific, and it distinguishes from siblings like get_scheduled_job, create_scheduled_job, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing multiple schedules, but there is no explicit guidance on when to use this tool over alternatives like get_scheduled_job or trigger_scheduled_job. The context signals and sibling names suggest differentiation, but the description itself lacks explicit usage criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scoped_appsARead-onlyIdempotent
List scoped applications (custom apps) installed in the instance
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search apps by name or scope prefix | |
| active | No | Filter to active apps only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description's statement that it lists apps adds minimal behavioral context. No contradictions, but no extra details on pagination or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with the key action and resource. No unnecessary words, earning its place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with three optional parameters and no output schema, the description combined with schema annotations provides sufficient context. Could mention default limit or return type, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all three parameters with 100% coverage. The tool description does not add any additional meaning beyond what the schema already provides, aligning with baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'scoped applications (custom apps) installed in the instance', distinguishing it from other list_* tools by specifying the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives like 'get_scoped_app' or other list tools. The description simply states what it does without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_script_includesARead-onlyIdempotent
List script includes (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| query | No | Filter (e.g., "nameLIKEUtil") | |
| active | No | Filter to active includes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds value by disclosing the SCRIPTING_ENABLED requirement, which is a behavioral condition not captured in annotations. This helps the agent understand preconditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that includes a key prerequisite. It is front-loaded and contains no unnecessary words. While brief, it efficiently conveys the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with optional parameters and no output schema, the description is adequate. It covers the basic purpose and a requirement, but could mention that results are filtered lists (implied by params) or contrast with single-record retrieval tools. Overall, it is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter descriptions for query, active, and limit. The description does not add extra meaning beyond the schema, so it meets the baseline expectation without enhancement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists script includes, which is a specific verb+resource. It also mentions a prerequisite (SCRIPTING_ENABLED=true), distinguishing it from sibling list tools like list_acls or list_assets. This effectively communicates the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage conditions by stating a prerequisite (SCRIPTING_ENABLED=true) but does not explicitly guide when to use this tool versus alternatives like get_script_include or search_script_includes. No when-not-to-use or sibling comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scrum_tasksARead-onlyIdempotent
List scrum tasks, optionally filtered by story
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| assigned_to | No | Filter by assignee | |
| story_sys_id | No | Filter by parent story sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description's statement aligns but adds no extra behavioral context beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose, with no extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no output schema, it fails to mention default limit, pagination, sorting, or return fields, leaving gaps in understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions; the description merely echoes 'filtered by story' without adding new meaning or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists scrum tasks with optional story filtering, distinguishing it from sibling tools like list_stories and create_scrum_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as list_my_tasks or list_stories, leaving the agent to infer usage from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_security_incidentsBRead-onlyIdempotent
List security incidents with filters (severity, state, category)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Additional encoded query string | |
| state | No | Filter by security incident state | |
| category | No | Filter by incident category | |
| severity | No | Filter by severity. 1=High, 2=Medium, 3=Low |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and idempotency. The description adds that it lists with filters, which is consistent. However, it omits behavioral details like pagination behavior or result ordering that could be useful beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It conveys the core purpose efficiently, though it could be slightly expanded for clarity without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description does not explain what the tool returns (e.g., list of incident records, fields). It also fails to mention pagination or the default limit (25), which is important for a list tool. Without these, the description is incomplete for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described. The description only mentions filters (severity, state, category) broadly, adding no new meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List security incidents with filters', specifying the verb (list) and resource (security incidents). It distinguishes from sibling list_* tools by naming the specific resource and key filter dimensions (severity, state, category).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., get_security_incident for details, create_security_incident for creation). It does not mention prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_security_playbooksARead-onlyIdempotent
List Security Incident Response playbooks. These are Process Automation Designer definitions (sys_pd_process_definition) shipped in the sn_si_aw scope, e.g. the Malware / Phishing / Failed Login templates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| query | No | Search by playbook label or name | |
| active | No | Filter active only (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds real context about the underlying table and scope, which helps an agent interpret results, but says nothing about ordering, pagination beyond the schema's limit, or what happens when active defaults to true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource, followed by a single clarifying sentence about the table and scope. Nothing is repeated and nothing stray is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and no output schema, the description gives enough grounding (source table, scope, example templates) for an agent to call it correctly. Only the relationship to the execution tool run_security_playbook is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, query, and active are already documented in the schema. The description adds no further parameter semantics such as whether query matches label vs. name case-insensitively or how active=false behaves. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List Security Incident Response playbooks') and goes further by disambiguating what a playbook actually is here: Process Automation Designer definitions in sys_pd_process_definition under the sn_si_aw scope. That said, it doesn't distinguish itself from closely named siblings like run_security_playbook, list_process_automations, or trigger_agentic_playbook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the word 'List' and the security-incident-response framing. It never says when to choose this over run_security_playbook (to execute one) or list_process_automations (generic PAD definitions), which are the obvious confusable siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_soap_message_functionsARead-onlyIdempotent
List SOAP Message Functions (operations) for a given SOAP Message
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| soap_message_sys_id | Yes | Parent SOAP Message sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and idempotentHint=true, so description adds no new behavioral info beyond stating it lists functions per message.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, concise sentence with no unnecessary words. Well-structured and direct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but for a simple list operation, the description is adequate with annotations. However, could mention typical return fields or pagination behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already describes parameters clearly. Description does not add extra meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'List', resource 'SOAP Message Functions', and scope 'for a given SOAP Message'. Distinguishes from sibling tools like list_soap_messages and get_soap_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or alternatives. Context implies use after obtaining a SOAP message sys_id, but lacks explicit when-not-to-use or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_soap_messagesARead-onlyIdempotent
List outbound SOAP Message configurations (sys_soap_message). Endpoints live on each function, not the message.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search by name or description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds useful domain context—outbound SOAP messages from sys_soap_message and the function-level endpoint model—but does not describe return shape, pagination, or filtering behavior beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the tool's core purpose front-loaded and a useful data-model caveat second. There is no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter list tool with full schema coverage and read-only annotations, the description gives enough context to select and invoke it. It does not explain return values, but no output schema exists and the list operation is straightforward; the endpoint-location note covers the main ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both limit and query are already documented in the input schema. The description does not add syntax or filtering details beyond the schema, which is the baseline expectation when the schema fully covers parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: lists outbound SOAP Message configurations from sys_soap_message. It also clarifies a key distinction from SOAP message functions by noting that endpoints live on each function, not the message, so an agent can distinguish it from list_soap_message_functions and get_soap_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note that endpoints live on each function rather than the message gives clear contextual guidance and implicitly steers endpoint lookup away from this tool. However, it does not explicitly name list_soap_message_functions as the alternative, so the guidance is clear but not fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_software_discovery_modelsCRead-onlyIdempotent
List normalized software discovery models (raw discovery output before/after normalization)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| approved | No | Filter by normalization approval status | |
| publisher | No | Filter by normalized publisher name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful framing that these records are discovery-derived output rather than the normalized catalog, but says nothing about default ordering, pagination behavior beyond the limit param, or volume expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is appropriately sized for a simple list tool, though the parenthetical costs a few words while adding ambiguity rather than clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, zero-required-param list tool with full schema coverage and annotations, this is minimally adequate. What remains missing is what the distinction from sibling software/discovery list tools is and what an agent should expect in a returned record.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — all three parameters (limit, approved, publisher) are described in the schema itself. The description adds no syntax, default, or interaction detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb and resource are clear (list software discovery models), but the parenthetical 'raw discovery output before/after normalization' muddles rather than sharpens scope — it is unclear whether raw, normalized, or both kinds of records are returned. It also does not name the adjacent tools it must be distinguished from, such as list_software_models or list_discovered_devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus list_software_models, list_software_installs, or list_discovered_devices, all of which sit in the same domain. The reader must infer the use case from the record type alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_software_installsBRead-onlyIdempotent
List discovered software installations with publisher, version, and license status
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| query | No | Additional encoded query | |
| product | No | Filter by normalized product / display name | |
| publisher | No | Filter by normalized publisher name | |
| unlicensed_only | No | Only installs flagged as unlicensed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so safety and mutability are covered. The description adds only the returned attribute set and says nothing about pagination behavior or how the free-form "query" parameter interacts with the structured filters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient but so terse that it leaves little room for routing or behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the only place to learn what a record looks like, and it names three fields only. It omits filtering guidance, default page size context, and any mention of how results relate to discovery runs or devices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (limit, query, product, publisher, unlicensed_only) are already documented. The description loosely echoes publisher and license status but adds no semantics beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List discovered software installations") and adds the attributes surfaced (publisher, version, license status). However, it does not distinguish itself from close siblings such as get_software_install, list_software_products, or list_software_licenses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: "discovered" installations suggests discovery-sourced records rather than software models or license positions. There is no explicit when-to-use or when-not-to-use guidance versus get_software_install (single-record fetch) or list_software_products.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_software_licensesARead-onlyIdempotent
List software license records with compliance status
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| query | No | Encoded query filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds 'with compliance status' but does not disclose additional behavior (e.g., pagination, ordering, or filtering details). Score is adequate as annotations cover safety concerns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It efficiently communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description could mention return structure or common fields. However, with annotations and schema handling parameters, the description is minimally adequate but leaves gaps in expected output behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents 'query' and 'limit'. The description adds no extra meaning or examples beyond the schema, meeting the minimum baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List software license records with compliance status' uses a specific verb ('List') and resource ('software license records'), clearly stating the action and domain. It distinguishes from sibling tools like 'get_license_compliance' by implying a list vs. single record retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., when to use 'get_license_compliance' instead). No prerequisites or context provided for effective use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_software_lifecycle_entriesBRead-onlyIdempotent
List software lifecycle master data — publisher-provided phase entries (GA/EOL/EOS/EOES) per product/version, with risk rating
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | Filter by risk level (e.g. "Very High", "High", "Medium", "Low") | |
| limit | No | Max records (default 25) | |
| active | No | Filter by active status (default: only active entries) | |
| product | No | Filter by normalized product name | |
| publisher | No | Filter by publisher name | |
| lifecycle_phase | No | Filter by phase (e.g. "End of life", "General availability") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, so the safety profile is covered. The description adds useful context that entries are publisher-provided master data with lifecycle phases and risk ratings, but does not disclose auth needs, rate limits, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the resource, data source, entry types, and included risk rating efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter list tool with annotations covering safety and a fully documented schema, the description is adequate but incomplete. It does not clarify return behavior or distinguish this tool from closely related lifecycle report tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six optional filters are already well documented in the schema. The description mentions product/version, phases, and risk rating, which loosely maps to the schema, but adds no syntax or behavioral detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'List software lifecycle master data' and explains the entries are publisher-provided phase data (GA/EOL/EOS/EOES) per product/version with risk rating. It clearly distinguishes the content from generic software model or report tools, though it does not explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool for listing lifecycle entries, but gives no explicit when-to-use guidance, exclusions, or alternatives. It does not mention when to use list_software_lifecycle_reports or get_software_lifecycle_report instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_software_lifecycle_reportsBRead-onlyIdempotent
List software lifecycle reports — current/upcoming EOL/EOS phase, install count, and CVE exposure per product
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| product | No | Filter by product name | |
| publisher | No | Filter by manufacturer/publisher name | |
| current_phase | No | Filter by current lifecycle phase (e.g. "End of Life", "General Availability") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered elsewhere. The description adds useful content-level context by listing the fields each report exposes, but says nothing about default result size behavior (the 25 limit only appears in the schema), ordering, or whether results include products with no lifecycle data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single em-dash sentence that front-loads the resource and follows with the payload contents, with no filler. Slightly compressed to the point of being a fragment, but nothing wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields, which is exactly what an agent needs to judge relevance. The remaining gap is disambiguation from the sibling lifecycle tools, which matters given how many similar listing tools exist in this server.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four filters (limit, product, publisher, current_phase) are already documented with examples. The description adds no filter semantics or interactions (e.g. whether filters are ANDed, or valid phase values), so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('software lifecycle reports'), then enumerates what each report contains (EOL/EOS phase, install count, CVE exposure), which is more informative than the name alone. However it never distinguishes itself from the near-identical sibling list_software_lifecycle_entries or get_software_lifecycle_report, leaving an agent to guess which to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no named alternatives, even though list_software_lifecycle_entries and get_software_lifecycle_report sit in the same sibling set and would plausibly be confused with this tool. Usage is only inferable 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.
list_software_modelsBRead-onlyIdempotent
List software models — specific version/edition entitlement units of a product (license type, EOL date, install count)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| query | No | Additional encoded query | |
| product | No | Filter by product name | |
| publisher | No | Filter by manufacturer/publisher name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds useful domain context about the kinds of attributes represented by a software model (license type, EOL date, install count), but it does not disclose pagination, filtering behavior, or other runtime traits beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted language. The parenthetical definition of software models earns its place by clarifying the resource type.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with fully described schema parameters and strong annotations, the description explains the resource and its key characteristics. It could be more complete by naming when to choose it over related software product or discovery-model list tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all four parameters documented in the schema. The description does not add any parameter-level meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('List software models') and defines what a software model is: a version/edition entitlement unit of a product. It is clear enough to distinguish the resource conceptually, but it does not explicitly differentiate it from close siblings like list_software_products or list_software_discovery_models.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool lists but gives no guidance on when to use it versus alternatives such as list_software_products, get_software_model, or list_software_discovery_models. The usage is only implied by the verb 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_software_productsCRead-onlyIdempotent
List the normalized software product catalog (publisher, product type)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by product name (LIKE match) | |
| limit | No | Max records (default 25) | |
| publisher | No | Filter by publisher name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered structurally. The description adds essentially nothing beyond that: no pagination behavior, no note that limit defaults to 25, no indication whether the catalog can be large or how publisher/product type relate to filters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded clause with zero padding. It is efficiently sized, but the terseness edges toward under-specification rather than disciplined brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with full schema coverage and annotations, the minimum is met. Still, with no output schema the description should say what a record returns and how this differs from the other software-* listing tools, which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so name, limit, and publisher are fully documented in the schema; baseline is 3. The parenthetical '(publisher, product type)' adds a little context but 'product type' is not an input parameter, so it may mildly confuse rather than clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (List) and resource (normalized software product catalog) and hints at the shape of the records. However, it does nothing to distinguish this from close siblings like list_software_models, get_software_model, list_software_installs, and list_software_discovery_models, which an agent would have to disambiguate by opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus the software-model or software-install siblings, and no prerequisites or exclusions are mentioned. The agent only knows it lists something software-catalog-related.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_storiesBRead-onlyIdempotent
List agile stories with optional sprint or state filter
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| state | No | Filter by state (e.g., "1"=Open, "2"=Work in Progress, "3"=Complete) | |
| sprint | No | Filter by sprint sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds no additional behavioral context such as pagination behavior, response format, or rate limits. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the key information (verb, resource, filters). Every word is essential, and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple read-only nature of the tool, the description, combined with the rich annotations and full schema coverage, provides sufficient context. It could mention the default limit and that it returns a list, but the schema covers the limit parameter and the verb implies a list result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description mentions 'optional sprint or state filter' which aligns with the schema but does not add new meaning beyond what is already provided in the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('list'), the resource ('agile stories'), and optional filters ('sprint or state'), making it easy to understand what the tool does. It distinguishes itself from sibling tools like 'create_story' or 'get_story' 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.
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 alternative list tools (e.g., list_epics, list_scrum_tasks). The description does not mention prerequisites, context, or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subflowsARead-onlyIdempotent
List available subflows that can be reused across flows
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| query | No | Search subflows by name | |
| active | No | Filter to active subflows only (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, making the description's minimal behavioral info acceptable but not adding beyond the known safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that efficiently conveys the purpose, though it could be slightly expanded without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple list tool with comprehensive annotations, but lacks details about pagination or the exact scope of 'available subflows.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter has a clear description; the description adds no extra meaning, meeting the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists subflows that are reusable across flows, differentiating it from similar tools like list_flows which list full flows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like list_flows or get_subflow, only an implicit hint about reusability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_system_propertiesCRead-onlyIdempotent
List system properties with optional filtering
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by type (e.g. "boolean", "string") | |
| limit | No | Max records (default 50) | |
| query | No | Encoded query to filter properties | |
| category | No | Filter by category (e.g. "email", "security") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds minimal context beyond 'optional filtering', failing to mention pagination, default limit, or any side effects. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded with the main action. It wastes no words but could be slightly more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters, no output schema, and numerous sibling tools, the description lacks completeness. It does not explain return format, filtering behavior, or how this tool differs from similar ones.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. The description implies filtering but adds no additional meaning beyond what the schema provides. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists system properties with optional filtering. It is specific about the verb and resource but does not differentiate from sibling tools like search_system_properties or list_property_categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., search_system_properties, get_system_property). There is no mention of prerequisites, optimal use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_transform_field_mapsARead-onlyIdempotent
List field-level mappings within a Transform Map
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| transform_map_sys_id | Yes | Parent Transform Map sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint as true, so the description need not repeat safety traits. It adds no further behavioral details beyond the listing action. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It efficiently communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, annotations covering safety), the description is adequate. It could optionally note that the return is a list of mapping objects, but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters ('Parent Transform Map sys_id', 'Max records to return (default 50)'). The tool description adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List field-level mappings within a Transform Map' clearly states the action (list) and the resource (field-level mappings within a Transform Map). It distinguishes from siblings like 'list_transform_maps' (lists transform maps themselves) and 'run_transform_map' (executes a transform map).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to see mappings inside a specific transform map) but does not explicitly state when to use vs alternatives, such as 'get_transform_map' which might return similar info. No when-not or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_transform_mapsBRead-onlyIdempotent
List Transform Maps used for importing data into ServiceNow tables
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search by name or target table | |
| target_table | No | Filter by target table name (e.g. "incident") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and idempotency. The description adds minimal behavioral context beyond stating the purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with 10 words, front-loaded with main verb and resource. Efficient, though could be slightly expanded without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and description doesn't explain response format or what a transform map includes. Annotations hint at open world, but context could be richer for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 3 parameters have descriptions in the input schema (100% coverage), so the description adds no extra parameter meaning. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'List', resource 'Transform Maps', and context 'used for importing data into ServiceNow tables'. This distinguishes it from sibling list tools like list_transform_field_maps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The description implies usage for listing transform maps, but no alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ui_actionsARead-onlyIdempotent
List UI Actions (buttons, context menus, related links) for a table (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by type: button, context_menu, related_link, list_link, list_button, list_context_menu | |
| limit | No | Max results (default: 25) | |
| table | No | Filter by table name | |
| active | No | Filter to active actions only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, making the tool's safety and behavior clear. The description adds a behavioral constraint (SCRIPTING_ENABLED=true) that is not in annotations, providing extra context. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose. No extraneous words; every part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with 4 parameters and no output schema, the description adequately covers the main functionality and a key requirement. Minor omission: No mention of pagination or default limit, but the input schema includes a limit parameter with default 25.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema describes all parameters adequately. The description mentions 'buttons, context menus, related links', which mirrors the type parameter's enum values but does not add new meaning beyond the schema. Thus, baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'List', the resource 'UI Actions', and the scope 'for a table'. It also differentiates from sibling tools like get_ui_action (single retrieval) and create_ui_action (creation). The context of buttons, context menus, and related links adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite ('requires SCRIPTING_ENABLED=true'), which helps the agent understand when the tool is available. However, it does not explicitly compare with alternatives like list_acls or list_business_rules, leaving some ambiguity about selection among sibling listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_uib_componentsBRead-onlyIdempotent
List available UI Builder components (macroponents) in the instance
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 50) | |
| scope | No | Filter by scope/app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, indicating safe, idempotent, and open-world behavior. The description adds that the tool lists 'available' components, but does not elaborate on query semantics or scope effects. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that is front-loaded with the core action. The parenthetical 'macroponents' may cause slight confusion but does not significantly detract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two parameters and rich annotations, the description is adequate but lacks detail on return format, pagination behavior, and how scope filtering works. It does not leverage the opportunity to add completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with descriptions for both parameters ('Max records (default 50)' and 'Filter by scope/app'). The description repeats no parameter info, so it adds no extra meaning beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List available UI Builder components (macroponents) in the instance'. It uses a specific verb ('list') and resource ('UI Builder components'), and distinguishes from sibling tools like 'list_uib_data_brokers' and 'list_uib_pages'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when or when not to use this tool, nor does it mention alternatives. It simply states what the tool does, leaving the agent without context for selection among similar list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_uib_data_brokersARead-onlyIdempotent
List UI Builder data brokers (data sources for pages)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| page_sys_id | No | Filter by page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description's brevity is acceptable. It adds no behavioral context beyond that, but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is efficient and front-loaded, but it could briefly mention key parameters without significant bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with no output schema and good annotations, the description is adequate but lacks details on return format, pagination, or how parameters affect results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the two parameters (page_sys_id, limit). Schema only describes page_sys_id; limit lacks description. The tool's purpose is clear, but parameters are not explained, forcing reliance on schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List) and the resource (UI Builder data brokers) with an explanatory parenthetical ('data sources for pages'), making it distinct from sibling tools like list_uib_components or list_uib_pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing data brokers but provides no explicit guidance on when to use this tool versus alternatives, nor any conditions for not using it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_uib_pagesARead-onlyIdempotent
List UI Builder pages and their route configurations
| Name | Required | Description | Default |
|---|---|---|---|
| app | No | Filter by UX app sys_id | |
| limit | No | Max records (default 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety. The description adds minimal behavioral context beyond stating that pages and routes are listed. No contradictions, but no extra value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional parameters, no output schema), the description adequately conveys the core functionality. It could mention the return format (e.g., list of objects) but is otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters (limit, app). The description does not add additional meaning beyond what the schema already provides, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'UI Builder pages', and specifies that route configurations are included. It effectively distinguishes from sibling tools like 'get_uib_page' (single page), 'create_uib_page', and 'update_uib_page'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like 'get_uib_page' or 'search_catalog' for UI Builder pages. While the context of a list tool implies broad retrieval, the lack of explicit when/when-not criteria is a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ui_policiesARead-onlyIdempotent
List UI Policies for a table (field visibility, mandatory, read-only rules) (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 25) | |
| table | No | Filter by table name | |
| active | No | Filter to active policies only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and idempotentHint. The description adds that the tool requires SCRIPTING_ENABLED=true, a behavioral prerequisite not covered by annotations. It also explains what UI policies are, giving agents insight into the data structure. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately states 'List UI Policies for a table' and adds context in parentheses. No redundancy, all information earns its place. Very concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with three optional parameters and read-only annotations, the description covers purpose, prerequisite, and data type. The input schema handles parameter details. It lacks mention of default ordering or pagination, but is sufficiently complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all three parameters with descriptions. The description only mentions 'for a table,' which aligns with the table parameter but does not add semantics for active or limit. Since schema coverage is 100%, baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists UI policies for a table, specifying the types of rules (field visibility, mandatory, read-only). This distinguishes it from sibling tools like list_acls or list_business_rules, which deal with different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the tool lists UI policies for a table and includes a prerequisite (SCRIPTING_ENABLED=true). It does not explicitly state when not to use or mention alternatives like get_ui_policy, but the verb 'list' vs 'get' provides implicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_update_setsBRead-onlyIdempotent
List Update Sets by state (in progress, complete, ignore)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default 25) | |
| query | No | Additional encoded query filter | |
| state | No | State filter: "in progress", "complete", "ignore" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so safety and idempotency are known. The description adds that the tool filters by state, which is a behavioral detail beyond annotations. However, it does not disclose pagination behavior, result ordering, or how the tool behaves when no state is provided. With annotations covering the main traits, the description adds moderate value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that efficiently conveys the core functionality. There is no extraneous text; every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with rich annotations and fully described parameters, the description covers the main filtering use case. It does not explain default behavior when state is omitted, but given the low complexity, it is largely complete. The absence of output schema is compensated by the readOnlyHint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter descriptions are clear. The description merely repeats the state values listed in the schema ('in progress', 'complete', 'ignore'), adding no new semantic meaning. The query and limit parameters are already well described in the schema, so the description doesn't enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists update sets by a specific state attribute. It names the resource and the filtering criterion, making the primary action obvious. However, it does not specify the scope (e.g., all update sets or those in the current scope), which distinguishes it from similar list tools slightly less completely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings, such as get_current_update_set, get_update_set, or complete_update_set. It does not mention that for a specific update set ID, other tools are more appropriate, nor does it discuss prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usem_rulesARead-onlyIdempotent
List USEM/Vulnerability Response automation rules and configs of a given type (assignment, remediation_task, remediation_target, risk_calculator, calculator_rule, risk_field, risk_score_weight, calculator_config, classification, classification_rule, exception_rule, exception_config, rollup, approval, auto_close, exclusion). Ordered by execution order where the table has one, otherwise by a natural key. Optionally filter by active state or an extra encoded query.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 50, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| active | No | Filter by active state (ignored for rule types without an active field) | |
| rule_type | Yes | Which rule family to operate on: assignment (sn_sec_wf_assign_rule), remediation_task, remediation_target (TTR/SLA targets), risk_calculator + calculator_rule + risk_field + risk_score_weight + calculator_config (risk scoring), classification + classification_rule, exception_rule + exception_config, rollup (score rollup), approval, auto_close, exclusion | |
| display_value | No | Return human-readable reference/choice values (true) or both raw and display ("all") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds non-obvious behavior beyond that: results are ordered by execution order where the table has one, otherwise by a natural key, and that the different rule types live in different families of tables/configs. It does not state pagination behavior or return shape, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb, resource and scope, then ordering, then optional filters — a sensible information order. The first sentence's 16-item parenthetical duplicates the enum already present in the schema, which is avoidable padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with a fully documented schema and annotations covering safety, the description supplies the two things the schema cannot: which rule families exist conceptually and how results are ordered. No output schema exists, but ordering plus the type list is sufficient to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the rule_type enum with per-type hints, so the schema does the heavy lifting and 3 is the baseline. The description only restates the type list and mentions the two optional filters, adding essentially no semantics beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List USEM/Vulnerability Response automation rules and configs') plus the scope selector ('of a given type') and enumerates all 16 supported rule families. An agent can distinguish this from get_usem_rule (single record) or set_usem_rule_active without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the enumeration of rule types and the note that filtering by active state or an encoded query is optional, but there is no explicit when-to-use guidance and no named alternatives (e.g. get_usem_rule for a known sys_id, set_usem_rule_active for toggling). The agent must infer the routing from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersBRead-onlyIdempotent
List users with optional search filter
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20) | |
| query | No | Filter (e.g., "active=true^departmentLIKEIT") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description does not need to repeat them. However, it adds no further behavioral context such as pagination or result limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that conveys the core purpose. While efficient, it could be slightly more structured with additional context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with annotations and full schema coverage, the description is adequate but lacks mention of return fields or pagination behavior, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no additional meaning beyond the schema's parameter descriptions. It simply restates the filter capability.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('users') and mentions an optional search filter, clearly distinguishing it from other list tools targeting different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like query_records or nlq_query, and does not specify if it is for all users or filtered sets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ux_appsARead-onlyIdempotent
List Next Experience (UI Builder) applications
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Search apps by name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety is covered. The description does not add behavioral details like pagination behavior or default limit (which is in schema but not description). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no unnecessary words. Efficiently communicates the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two optional parameters, the description is adequate but minimal. Lacks explanation of output or differentiation from similar sibling tools. Could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description does not add any additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (list) and resource (Next Experience (UI Builder) applications). It distinguishes from sibling tools like list_uib_pages and list_uib_components by specifying 'applications'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives among siblings. Usage is implied when listing UX apps, but no when-not or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ux_pagesBRead-onlyIdempotent
List pages within a Next Experience (UI Builder) application
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 50) | |
| query | No | Filter pages by name | |
| app_sys_id | Yes | Parent UX app sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint. Description adds no extra behavioral context (e.g., pagination, sorting, or result details).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 12 words, front-loaded with verb and resource. No extraneous content, efficiently conveys purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with annotations and full schema coverage, the description is mostly adequate. Could mention response format (page properties) but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all 3 parameters. Description does not add meaning beyond what schema already provides; baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specifies verb 'List' and resource 'pages' within 'Next Experience (UI Builder) application'. Clearly distinguishes from sibling tools like list_uib_components or list_ux_apps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as get_uib_page or list_uib_pages. The agent may need to infer from similar-sounding names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_va_categoriesARead-onlyIdempotent
List Virtual Agent topic categories
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, openWorldHint) cover safety and idempotency. Description adds no additional behavioral context beyond what annotations already provide, so it's adequate but not enhanced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words. Efficient, but could potentially include more useful information without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and good annotations, the description is minimally complete. It states the action and resource, though it doesn't describe output shape or category scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'limit' is fully described in the schema (description: 'Max results (default 25)'). The description adds no extra meaning or usage hints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List Virtual Agent topic categories' with a specific verb and resource. It effectively distinguishes from sibling tools like 'list_va_topics_full' or 'get_va_topic'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not specify when not to use it or provide context about selection criteria among sibling list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_va_conversationsARead-onlyIdempotent
List recent Virtual Agent conversations
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25) | |
| user_sys_id | No | Filter by user | |
| topic_sys_id | No | Filter by topic |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description adds limited behavioral context. It mentions 'recent' but doesn't specify time window, ordering, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at 5 words with no waste. Front-loaded with verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no output schema. Description covers core purpose. Could mention default sorting or return format but not essential given safety annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The tool description adds no extra meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List recent Virtual Agent conversations' clearly states the verb (list), resource (Virtual Agent conversations), and scope (recent). It distinguishes from siblings like 'get_va_conversation' (singular detail) and 'list_va_topics_full' (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies it is the default for listing conversations but does not mention exclusions or when to use 'get_va_conversation' for details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_va_topics_fullBRead-onlyIdempotent
List all Virtual Agent topics with category and status details
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50) | |
| query | No | Additional encoded query | |
| active | No | Filter to active topics only (default true) | |
| category | No | Filter by category name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint. Description adds 'with category and status details' but no further behavioral context (e.g., pagination, default limit behavior). Minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single, clear sentence. It is concise, but slightly front-loaded with important info. Could be improved with structured details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description could detail the response structure more. It mentions category and status but leaves out other potentially relevant fields. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already well-described. The description does not add any additional meaning beyond the schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'Virtual Agent topics', and specifies the included details (category, status). It is unambiguous, but does not explicitly differentiate from sibling tools like get_va_topic or list_va_categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. With many sibling tools for listing and viewing VA topics, the description should provide context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vr_approvalsARead-onlyIdempotent
List approval records (sysapproval_approver) for Vulnerability Response items — exception, risk-acceptance and false-positive requests whose approval drives a VR state transition. Defaults to pending (state=requested). Each row shows the source record class and number.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| state | No | Approval state filter (default "requested"); e.g. requested, approved, rejected. Use "any" for all. | |
| source_table | No | Restrict to one source_table (e.g. "sn_sec_exception_change_approval"); default = all VR classes | |
| approval_source | No | Filter by the ultimate VR record class — "sn_vul_vulnerable_item" (e.g. False Positive on a VI) or "sn_vul_vulnerability" (group exception/deferral) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld. The description adds useful context beyond them: the default state filter (state=requested), what a row contains (source record class and number), and the domain purpose (approvals drive VR state transitions). Pagination/return-size behavior is left to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense, front-loaded sentences with no filler: scope first, default second, row contents last. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with fully documented optional parameters, the description covers scope, default filter, and row shape. Only minor gaps remain, such as result size/pagination behavior, which the limit parameter schema already addresses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters are already fully documented. The description restates the default (pending/requested) and hints at the source record class, but adds no syntax or semantics beyond what the schema provides. Baseline 3 applies when the schema carries the weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('approval records (sysapproval_approver)') scoped to Vulnerability Response items, with the concrete record types (exception, risk-acceptance, false-positive). The VR scoping implicitly separates it from generic siblings like list_approvals, but no sibling is named so the differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The default-to-pending behavior is stated, which helps an agent understand the typical call, but there is no explicit guidance on when to prefer this over list_approvals, get_my_approvals, list_vr_exception_requests, or act_on_vr_approval. Usage is implied by the VR scope rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vr_exception_requestsARead-onlyIdempotent
List Vulnerability Response exception requests (sn_sec_exception_change_approval) — False Positive, Risk Acceptance and Exception/Deferral requests raised against vulnerable items or groups. Shows request_type, the target record, the desired state/substate if approved, the approval_state, requester and reason. Approve/reject via act_on_vr_approval (find the approver rows with list_vr_approvals).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| table | No | Target record class, e.g. "sn_vul_vulnerable_item" or "sn_vul_vulnerability" | |
| latest_only | No | Only the latest revision of each request (default: true) | |
| request_type | No | Exact request type, e.g. "False positive", "Exception", "Risk Acceptance" | |
| approval_state | No | Approval state: 0=In Review, 1=Approved, 2=Rejected, 3=No Longer Required, 4=Expired, 5=Draft |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds useful scope: the request types covered (False Positive, Risk Acceptance, Exception/Deferral), the target record class, and the fields displayed. It does not mention pagination or permissions, but with no output schema the field list is meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loads the tool's purpose, then lists displayed fields, then routes to approval tools. Every sentence earns its place, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and no output schema, the description is complete enough: it identifies the record type, subtypes, fields shown, and how to take follow-up approval actions. An agent has what it needs to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters. The description adds some mapping between request types and the request_type parameter, and mentions target records in relation to table, but it does not add syntax or deeper meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List Vulnerability Response exception requests') and identifies the underlying table. It distinguishes the tool from siblings by naming list_vr_approvals (approver rows) and act_on_vr_approval (approval action), making its role clear without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: it lists exception requests, and approval or rejection is done through act_on_vr_approval after finding approver rows with list_vr_approvals. It does not give explicit exclusions or a full decision tree, but the routing to the correct sibling tools is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vr_notificationsARead-onlyIdempotent
List Vulnerability Response notification definitions (sysevent_email_action) scoped to the VR table family (sn_vul_* / sn_sec_*). Use the generic create_notification/update_notification tools to modify them.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 50, max: 1000) | |
| table | No | Restrict to a single collection/table, e.g. "sn_vul_vulnerable_item" | |
| active | No | Filter by active state | |
| name_contains | No | Filter where the notification name contains this text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds the useful disclosure that results come from sysevent_email_action and are restricted to the VR table family, but says nothing about result volume, ordering or pagination behavior beyond what the schema's limit field implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and its scope, then the alternative for writes. No filler or restated title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with four optional, fully documented parameters and no output schema, the description covers what is being listed, the scope constraint, and where to go for mutation. Only the shape of returned definitions is left unaddressed, which is a minor gap given the annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (limit, table, active, name_contains are all documented with examples), so the schema carries parameter semantics. The description adds no additional meaning such as match semantics for name_contains or how table interacts with the sn_vul_*/sn_sec_* scope.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and a precisely scoped resource (Vulnerability Response notification definitions stored in sysevent_email_action, limited to sn_vul_* / sn_sec_* tables). The table-family scope effectively separates it from the generic list_notifications sibling, though that sibling is never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes write operations to create_notification/update_notification, which is a clear when-not-this-tool signal. It does not say when to prefer this over list_notifications or get_notification, so the read-side routing is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vulnerabilitiesARead-onlyIdempotent
List vulnerability entries from the Vulnerability Response module
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| query | No | Additional encoded query string | |
| state | No | Filter by state (open, in_review, risk_accepted, closed) | |
| ci_sysid | No | Filter by affected CI sys_id | |
| severity | No | Filter by CVSS severity (critical, high, medium, low) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint. The description adds only the module context, which is not behavioral. No contradictions, but no extra disclosure beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence of 7 words, front-loaded with the core action and resource. No wasted text; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with good annotations and full schema, the description is nearly complete. Lacks mention of return format (no output schema) but still adequate given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for all 5 parameters. The description does not add any additional meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (list) and resource (vulnerability entries) with a specific module context (Vulnerability Response), distinguishing it from sibling tools like get_vulnerability (single) and other list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like get_vulnerability, scan_vulnerabilities, or update_vulnerability. Usage is implied but not stated in a helpful way.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vulnerability_groupsARead-onlyIdempotent
List Vulnerability Groups (sn_vul_vulnerability) — the task-based remediation entity (sys_class label "Remediation Task", number prefix VUL). Filter by state, minimum risk score, or assignment group. Ordered by descending risk score. Use add_vi_to_remediation_task to add members and the SLA tools (record_type=vg) for TTR status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| state | No | State filter. Single value or comma-separated list. 1=Open, 2=Under Investigation, 10=Awaiting Implementation, 11=In Review, 12=Deferred, 101=Resolved, 3=Closed | |
| display_value | No | Return human-readable reference/choice values (true) or both raw and display ("all") | |
| risk_score_min | No | Only return groups with risk_score >= this value | |
| assignment_group | No | Filter by assignment group sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and open-world behavior, so the description is not responsible for the safety profile. It adds useful behavioral context by disclosing the descending risk-score ordering, the underlying entity/table identity, and related operations for membership and SLA reporting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences and front-loads the core purpose before filters and related tools. Technical parentheticals are justified because they identify the precise entity and table.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter list tool with full schema coverage and annotations, the description supplies the essential purpose, filters, ordering, and related operations. It does not describe return fields or pagination behavior, and there is no output schema to compensate, but those gaps are moderate rather than severe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema. The description mentions the main filter dimensions but does not add syntax, constraints, or edge-case behavior beyond what the schema provides, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — "List Vulnerability Groups" — and anchors it to the exact table `sn_vul_vulnerability`, with additional identifying context such as the sys_class label and number prefix. This makes the entity distinguishable from broader vulnerability and remediation-task siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear invocation context: filter by state, risk score, or assignment group, and results are ordered by descending risk score. It also routes the agent to `add_vi_to_remediation_task` for membership changes and SLA tools for TTR status, though it does not explicitly state when to choose this tool over sibling list tools such as `list_remediation_tasks`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vulnerable_itemsARead-onlyIdempotent
List USEM Vulnerable Items (sn_vul_vulnerable_item). Filter by state, minimum risk score, CMDB CI, or assignment group. Returns curated fields ordered by descending risk score.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 25, max: 1000) | |
| query | No | Additional raw encoded query appended with ^ | |
| state | No | State filter. Single value or comma-separated list. 1=Open, 2=Under Investigation, 10=Awaiting Implementation, 11=In Review, 12=Deferred, 101=Resolved, 3=Closed | |
| cmdb_ci | No | Filter by affected CI sys_id | |
| display_value | No | Return human-readable reference/choice values (true) or both raw and display ("all") | |
| risk_score_min | No | Only return VIs with risk_score >= this value | |
| assignment_group | No | Filter by assignment group sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds useful behavioral context by noting that results are curated fields ordered by descending risk score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and table name, then immediately covering filters and return ordering. Every sentence carries useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description states that curated fields are returned and ordered by descending risk score. Combined with the fully documented input schema and annotations, this is sufficient for correct invocation, though more detail on returned fields could help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully documents all seven parameters. The description repeats a subset of filters but adds no syntax or meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (List) and resource (USEM Vulnerable Items / sn_vul_vulnerable_item), making the tool's function immediately clear. It does not explicitly distinguish itself from sibling tools such as get_vulnerable_item or list_vulnerabilities, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states which filters are available, implying the tool is used to retrieve filtered vulnerable-item lists. However, it gives no guidance on when to choose this tool over alternatives like get_vulnerable_item or list_vulnerabilities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_widget_instancesBRead-onlyIdempotent
List instances of a specific widget placed on portal pages
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (default 25) | |
| widget_sys_id | Yes | Widget sys_id to find instances of |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds no further behavioral context, but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, fully front-loaded with the core action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, yet the description does not explain what 'instances' includes (e.g., page IDs, positions, or widget instance sys_ids). The return format remains ambiguous, which is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, both parameters have descriptions. The tool description does not add additional meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'list' and the resource 'instances of a specific widget placed on portal pages'. It distinguishes from siblings like list_portal_widgets (which lists all widgets) by specifying 'instances of a specific widget'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like list_portal_pages or list_portal_widgets. No mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspacesARead-onlyIdempotent
List legacy Agent Workspace definitions (sys_aw_master_config), not Configurable Workspace UX applications
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| active | No | Filter active (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds the scoping fact that results come only from the legacy sys_aw_master_config table, but says nothing about default page size, ordering, or whether inactive records are included despite being a listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded clause with zero filler. The disambiguating detail (table name and the negated alternative) is placed immediately, which is exactly what an agent needs first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-parameter list tool with no output schema and read-only annotations, this covers the main invocation risk (picking the wrong workspace concept). Only minor gaps remain: default limit behavior and whether results are paginated or sorted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: 'active' has a short note but 'limit' is entirely undocumented, and the description contributes no parameter meaning at all. With coverage below 50-80%, the description was expected to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and a specific resource (legacy Agent Workspace definitions, sys_aw_master_config), and explicitly negates the confusingly similar sibling family (Configurable Workspace UX applications such as list_ux_apps/get_ux_app). An agent can tell exactly which table it is enumerating without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'not Configurable Workspace UX applications' clause gives a clear exclusion rule that routes the agent toward or away from this tool. It falls short of naming a concrete alternative tool (e.g., list_ux_apps) or stating prerequisites, so it is strong context rather than a full when/when-not guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ml_detect_anomaliesBRead-onlyIdempotent
Run anomaly detection on operational metrics (alert volume, incident trends, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look-back period in days (default 30) | |
| field | Yes | Numeric field to analyse (e.g. priority, reassignment_count) | |
| table | Yes | Table to analyze (e.g. incident, sn_agent_alert) | |
| threshold | No | Standard deviations for anomaly threshold (default 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover readOnly, idempotent, and openWorld. The description adds that it works on operational metrics, which provides minimal extra context. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information. Could include more detail without becoming verbose, but currently efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description does not explain what the tool returns or any behavioral nuances. With 4 parameters and no output guidance, the description is insufficient for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. The description adds no additional parameter insight beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs anomaly detection on operational metrics like alert volume and incident trends. It uses a specific verb-resource pair and distinguishes from siblings such as ml_train_anomaly_detector and ml_forecast_incidents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., forecasting or risk prediction). No exclusions or context provided, leaving the agent without decision-making support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ml_evaluate_modelARead-onlyIdempotent
Get accuracy, training status, and metrics for a trained ML solution
| Name | Required | Description | Default |
|---|---|---|---|
| model_sys_id | Yes | ML solution sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, effectively indicating a safe, idempotent read operation. The description adds no behavioral details beyond what the structured fields provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words, earning high marks for conciseness. Minor improvement could be adding front-loaded structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description adequately covers what the tool provides (accuracy, training status, metrics). It is sufficiently complete for an agent to understand the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter model_sys_id. The description does not add additional meaning beyond the schema's minimal description, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves accuracy, training status, and metrics for a trained ML solution, with a specific verb and resource. It distinguishes from sibling ML tools like ml_detect_anomalies and ml_forecast_incidents that serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after training a model but provides no explicit guidance on when to use versus alternatives or when not to use it. No exclusions or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ml_forecast_incidentsARead-onlyIdempotent
Forecast incident volume for the next N days based on historical trends
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by category (optional) | |
| priority | No | Filter by priority (optional) | |
| days_ahead | No | Number of days to forecast (default 7) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and openWorldHint. The description adds that it uses 'historical trends', which is minimal extra behavioral context. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is efficient and front-loaded, but lacks any structure beyond that. Every word earns its place but could benefit from more detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and the description does not explain return values or behavior. For a forecasting tool with optional params, more context is needed about what the output represents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all 3 parameters with descriptions (100% coverage). The description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Forecast' and resource 'incident volume' with temporal scope 'next N days', clearly distinguishing it from siblings like ml_predict_change_risk or ml_detect_anomalies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. The description implies it's for volume forecasting, but lacks when-not or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ml_model_training_historyARead-onlyIdempotent
Get training run history and accuracy trends for an ML solution over time
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look-back period (default 90) | |
| model_sys_id | Yes | ML solution sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint providing behavioral clarity. The description adds no further behavioral details beyond what is already in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no superfluous words. It is front-loaded with the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple two-parameter tool with full schema coverage and annotations, the description is sufficient. However, without an output schema, it could specify the return format for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (model_sys_id and days) are already described. The description does not add extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the specific resource 'training run history and accuracy trends' for an ML solution over time, distinguishing it from sibling ML tools like ml_evaluate_model or ml_detect_anomalies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving historical training data and accuracy trends, but does not explicitly mention when not to use or contrast with alternatives like get_pi_models or other ML tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ml_predict_change_riskARead-onlyIdempotent
Predict the risk level of a change request using historical ML analysis
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Change type: normal, standard, emergency | |
| category | No | Change category | |
| change_sys_id | No | Change request sys_id to evaluate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, openWorldHint) already communicate safety and idempotence; description is consistent but adds no further behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with 13 words, clear and free of unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output schema and does not explain return format or default behavior for optional parameters; suitable for a read-only prediction tool but could be improved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all parameters with descriptions (100% coverage); description does not add extra meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'predict' and resource 'risk level of a change request', differentiating from sibling tools like ml_train_change_risk (training) and get_change_request (querying).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives; users must infer from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ml_process_optimizationBRead-onlyIdempotent
Identify process bottlenecks using analysis of task durations and reassignment patterns
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Analysis period (default 90) | |
| table | Yes | Process table to analyse (e.g. incident, change_request, sc_task) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, openWorldHint) already disclose key behavioral traits. The description adds that it analyzes 'task durations and reassignment patterns,' which provides context beyond annotations. No contradictions, but it does not reveal potential side effects or limitations like rate limits or data scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 12-word sentence that immediately conveys the core action. Every word is meaningful, no redundancy. It is optimally concise for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analysis tool with 2 parameters and no output schema, the description is mostly adequate. It explains what it does and the analysis method. However, it does not describe the output format (e.g., list of bottlenecks, metrics, severity), which would help an agent interpret results. Considering the tool's simplicity, a moderate score is fair.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with clear descriptions (table: process table examples, days: default 90). The description adds no further parameter details. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Identify process bottlenecks using analysis of task durations and reassignment patterns.' The verb 'identify' and resource 'process bottlenecks' are specific. While it distinguishes from siblings like ml_detect_anomalies or ml_forecast_incidents, it does not explicitly differentiate from all ML tools, leaving slight ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives (e.g., ml_detect_anomalies or ml_forecast_incidents). It lacks explicit when-to-use or when-not-to-use instructions, leaving the agent to infer from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ml_train_anomaly_detectorB
Trigger training of an anomaly detection model for a specific table/field. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | Numeric field to train on | |
| table | Yes | Target table for anomaly detection |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the description's '[Write]' is redundant. The description does not add behavioral context such as whether training overwrites an existing model, how long it takes, or whether it is asynchronous. Given the annotation coverage, the bar is lower, but the description still adds no extra behavioral transparency beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with an explicit action and resource, plus a '[Write]' tag that reinforces the write nature. It is front-loaded and contains no unnecessary words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a training operation with no output schema and no mention of return values, job IDs, or next steps. The description does not explain what the agent should expect after triggering training (e.g., asynchronous job creation, training history). Given the complexity of model training and the absence of an output schema, the description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully covers both parameters (table and field) with clear descriptions. The description's phrase 'specific table/field' merely echoes the schema without adding new semantics. Baseline 3 is appropriate since the schema does the heavy lifting and the description provides no additional parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Trigger training') and the resource ('anomaly detection model for a specific table/field'). It distinguishes this from sibling tools like ml_detect_anomalies (which infers) and ml_evaluate_model (which evaluates). The scope is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The description implies usage for training an anomaly detector, but it does not mention exclusions (e.g., 'use ml_train_change_risk for risk models') or prerequisites. It is minimally implied by the tool name and context, but no explicit guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ml_train_change_riskA
Trigger training of the change risk prediction ML model. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| solution_name | No | ML solution name (default auto-detect) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and not idempotent. Description adds that it 'triggers training', which implies a state change, but does not disclose potential async behavior, resource impact, or effects on existing model versions. This is acceptable given annotation coverage but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single clear sentence, directly front-loaded with verb and object. No filler or redundancy; the trailing '[Write]' is a separate classification, not part of the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no output schema and one optional param. Description covers the core action but does not mention what the response looks like, whether training is synchronous or asynchronous, or if any confirmation/job ID is returned. Given the simplicity, this is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a self-descriptive parameter 'solution_name' (default auto-detect). Description adds no parameter info, but the schema already sufficiently documents the single optional parameter, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Trigger training' and identifies the exact resource 'change risk prediction ML model'. It clearly distinguishes from sibling tools like ml_predict_change_risk or ml_train_anomaly_detector by naming the model type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage: call when you need to train/retrain the change risk model. However, no explicit when-to-use or alternatives are mentioned, such as using ml_predict_change_risk for prediction or ml_evaluate_model for evaluation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ml_train_incident_classifierB
Trigger training of the incident classification ML solution. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| solution_name | No | ML solution name (default auto-detect) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds only the '[Write]' tag, which merely duplicates the readOnlyHint=false annotation. It fails to disclose important behavioral traits such as whether training is asynchronous, how long it might take, or what side effects occur (e.g., model replacement). With annotations already covering the write status, the description contributes no extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and resource, with a minimal '[Write]' tag. There is no wasted wording or redundant elaboration, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with a fully described schema and annotations, the description provides adequate purpose but lacks details about the return value or post-training behavior. Since there is no output schema, the agent does not know what result to expect, leaving a notable gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the single parameter solution_name with its default auto-detect behavior, giving 100% coverage. The description does not add any parameter-specific information, so it earns the baseline score of 3 without further enhancement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Trigger training') and the specific resource ('incident classification ML solution'), which distinguishes it from sibling ML training tools like ml_train_change_risk or ml_train_anomaly_detector. The verb and resource are precise, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, scenarios that warrant retraining, or differentiate from the many other ML training tools in the sibling list, leaving the agent without contextual selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ml_virtual_agent_nluARead-onlyIdempotent
Analyse Virtual Agent NLU performance — conversation completion rates and fallback metrics
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Analysis period in days (default 30) | |
| topic_sys_id | No | VA topic sys_id (optional, all topics if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds that it analyzes metrics, which is consistent and non-contradictory. However, it does not disclose additional behavioral traits such as aggregation methods, data freshness, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that gets straight to the point with no wasted words. It is concise and efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description could provide more detail about the return format or structure of the analysis. While it mentions key metrics, it is somewhat minimal for a tool that returns analytical results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (topic_sys_id and days) with their defaults and optionality. The description adds no extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyses Virtual Agent NLU performance, specifying 'conversation completion rates and fallback metrics'. It distinguishes from sibling tools that retrieve individual conversations or list topics, as it is an analytical tool rather than a retrieval one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for performance analysis, but provides no explicit guidance on when to use it versus alternatives like 'get_va_conversation' or 'list_va_conversations'. No when-not-to-use or prerequisite information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
natural_language_searchBRead-onlyIdempotent
Search ServiceNow using plain English (experimental)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 10) | |
| query | Yes | Plain English query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and repeatability. The description adds 'experimental', which hints at potential instability, but does not elaborate on behavioral details like result format or rate limits. Thus, it adds minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that effectively communicates the core functionality. It is concise and front-loaded with the key action, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 params, no output schema), the description is adequate but lacks details on result handling, pagination, or experimental caveats. It provides a minimum viable completeness but could be enhanced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The tool description does not add further meaning or examples beyond the schema, such as what 'plain English' entails or how to form queries. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches ServiceNow using plain English, which is specific and actionable. However, it does not differentiate from similar sibling tools like ai_search or nlq_query, leaving ambiguity about when to use this specific tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention contexts, prerequisites, or exclusions, which is a significant gap given the presence of multiple search-related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
natural_language_updateAIdempotent
Update a record using natural language (experimental, requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Table name | |
| instruction | Yes | Natural language update instruction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is a write operation with idempotency. The description adds only the experimental status and configuration requirement, but lacks details on limitations, error handling, or interpretation of natural language.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that effectively summarizes the tool's purpose and key conditions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with simple parameters and existing annotations, the description is minimal but sufficient in context. However, it does not explain the return value or behavior of the update, which may be expected for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully described in the schema with clear descriptions. The tool description does not add any additional parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a record using natural language, distinguishing it from other update tools that use structured inputs. It is specific and informative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it is experimental and requires WRITE_ENABLED=true, providing a constraint. However, it does not explicitly guide when to use this tool over other update tools 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.
nlq_queryBRead-onlyIdempotent
Ask a natural language question and get structured ServiceNow data (ServiceNow NLQ API)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 10) | |
| table | No | Optional target table hint | |
| question | Yes | Plain English question (e.g., "How many P1 incidents were opened this week?") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, which provide safety transparency. The description adds minimal behavioral context by mentioning the ServiceNow NLQ API, but does not elaborate on behaviors like rate limits, authentication, or data scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words. Front-loaded with the primary action and resource. Highly concise and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema, the description is minimal. It doesn't clarify what 'structured data' means, query limitations, or how it compares to sibling NL tools. Annotations help but overall completeness is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% parameter description coverage, so the schema already defines each parameter. The description adds no additional meaning beyond what the schema provides, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it takes a natural language question and returns structured ServiceNow data, using 'Ask' as a specific verb. However, it does not differentiate from the sibling tool 'natural_language_search', which likely serves a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like natural_language_search, query_records, or others. The description lacks context about appropriate use cases or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_catalog_itemA
Order a service catalog item (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the catalog item | |
| quantity | No | Quantity to order (default: 1) | |
| variables | No | Catalog item variables as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, non-idempotent operation. The description adds the WRITE_ENABLED=true prerequisite, which is useful, but it does not disclose side effects like creating a request, triggering approvals, or what response to expect. With annotations covering the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the action and a key requirement. Every word earns its place; there is no wasted text or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutative, open-world action with no output schema, the description lacks context about the result (e.g., what is returned, whether a request is created). The 100% param coverage helps, but the tool's external effects and response format are left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters (sys_id, quantity, variables) are already documented. The description adds no extra parameter meaning beyond what the schema provides, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource combination ('Order a service catalog item') that clearly distinguishes it from sibling tools like create_catalog_item, get_catalog_item, and update_catalog_item. The action is well-defined and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you want to order a catalog item) but does not explicitly state when to prefer this over alternatives like create_catalog_item or search_catalog. It only provides a prerequisite (WRITE_ENABLED=true), not usage context or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_update_setBRead-onlyIdempotent
Preview all changes contained in an Update Set
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to list (default 100) | |
| sys_id | Yes | Update Set sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description's 'Preview' aligns. However, description adds no extra behavioral context (e.g., what happens with an empty set, rate limits, or if preview consumes resources).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 7 words, no fluff. Front-loaded and clear, but could be slightly more structured (e.g., separate purpose and usage details). Still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal and lacks return value context (e.g., what the preview output is, whether it's a summary or detailed list). Given no output schema, description should hint at what to expect. Annotations partially compensate for safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters (sys_id, limit) with descriptions. The tool description does not add any additional meaning or usage notes beyond the schema. Baseline 3 is appropriate given 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Preview' and resource 'changes contained in an Update Set', clearly distinguishing it from siblings like list_update_sets or get_update_set. It directly states what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like list_update_sets or get_update_set. Does not specify when to use for dry-run or to avoid previewing large update sets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_changesetADestructive
Publish/export an update set to XML for deployment (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the update set |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive hint true, so agent knows it's a mutation. The description adds important behavioral context: the requirement of a system property, which is not in annotations. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with 15 words, no unnecessary information. It is front-loaded with the action and includes the critical prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with annotations, the description covers the main action and a key requirement. However, since there is no output schema, describing the return value (e.g., XML payload) would improve completeness. The mention of 'to XML' partially addresses this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description does not add parameter-specific details beyond what the schema already provides (sys_id is system ID of update set).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'publish/export' and the resource 'update set', with output format 'XML'. It distinguishes from siblings like 'commit_changeset' and 'export_update_set' by mentioning the system requirement, but the presence of a separate 'export_update_set' tool could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage condition ('requires SCRIPTING_ENABLED=true'), which helps the agent know prerequisites. However, it does not explicitly state when to use this tool over siblings like 'commit_changeset' or 'export_update_set'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_flowAIdempotent
Set active=true on a flow or subflow after verifying its type. This metadata update does not compile or perform the Flow Designer publish lifecycle. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type: flow or subflow (default flow) | |
| flow_sys_id | Yes | Flow or subflow sys_id to publish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as non-read-only, idempotent, non-destructive, but the description adds what the annotations cannot: that the effect is a metadata flag change with no compile or lifecycle side effects. It also notes type verification happens first. It doesn't mention permissions or what is returned, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the core semantics front-loaded and the limiting caveat immediately after. The trailing '[Write]' tag is redundant with the annotations but costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema metadata mutation, the description covers effect, scope limits, and safety well enough to call correctly. Only explicit permission/prerequisite and return behavior are unstated, which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, and the enum for type is explicit. The phrase 'after verifying its type' hints the type param matters, but adds no format or constraint detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Set active=true on a flow or subflow') and clarifies the scope is metadata-only rather than a real Flow Designer publish. An agent can distinguish it from trigger_flow/test_flow/publish_changeset, though the description never names those siblings by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The line 'does not compile or perform the Flow Designer publish lifecycle' effectively functions as a when-not caveat, steering the agent away if it expects a build/deploy. It does not name an explicit alternative for the full publish lifecycle, so it falls 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.
publish_knowledge_articleAIdempotent
Publish a draft knowledge article (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the article to publish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readonly, non-destructive, idempotent behavior. The description adds the WRITE_ENABLED requirement but does not elaborate on the effects of publishing (e.g., visibility changes). With annotations present, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence conveying purpose and a key prerequisite with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and annotations, the description covers the basic action and a permission requirement but omits details about state transitions (e.g., what happens if the article is already published) and output, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a description for sys_id. The tool description adds no additional meaning beyond the schema, meeting baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (publish) and resource (draft knowledge article), distinguishing it from sibling tools like create_knowledge_article or update_knowledge_article.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a prerequisite (requires WRITE_ENABLED=true) but does not explicitly state when to use this tool versus alternatives, nor does it mention conditions like article already being published.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_recordsBRead-onlyIdempotent
Query ServiceNow records with filtering, field selection, pagination, and sorting
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records (default: 10, max: 1000) | |
| query | No | Encoded query string (e.g., "active=true^priority=1") | |
| table | Yes | Table name (e.g., "incident", "change_request") | |
| fields | No | Comma-separated fields to return | |
| orderBy | No | Field to sort by. Prefix with "-" for descending | |
| display_value | No | Return human-readable values for reference/choice fields. true = display values only ({display_value, link}); "all" = both raw and display ({value, display_value, link}). Omit for raw sys_id/values. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds the capability surface (filtering, fields, pagination, sorting) but does not disclose additional behavioral context such as permissions, rate limits, or return format. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that enumerates the core operations without filler. Every phrase maps to a supported capability, and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic multi-table query tool with no output schema and many overlapping siblings, the description covers basic capability but omits return-value shape and selection guidance. Rich annotations and a fully documented schema compensate somewhat, but the definition is not fully complete for confident tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters in detail. The description maps its broad capabilities to those parameters but adds no syntax or format guidance beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Query') and resource ('ServiceNow records') and enumerates filtering, field selection, pagination, and sorting. It is clear what the tool does, but it does not distinguish itself from overlapping siblings such as smart_query, nlq_query, or get_record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names capabilities but gives no explicit when-to-use guidance, exclusions, or alternatives. With many query/search siblings present, an agent is left to infer whether this is the right generic query tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_eventA
Register a new custom event in the event registry (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Unique event name (e.g. "my_app.record_created") | |
| table | Yes | Table that fires this event (e.g. "incident") | |
| description | No | Description of when this event fires |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the SCRIPTING_ENABLED=true prerequisite, which is a behavioral requirement beyond what annotations provide. Annotations already indicate a non-readonly, non-idempotent write, so the description complements rather than repeats, though it doesn't detail failure modes or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource, and includes a parenthetical prerequisite. It is concise with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the purpose and a key prerequisite. With full schema coverage and annotations, it is sufficiently complete for a simple registration tool, though it does not describe return or error behavior. Given the tool's simplicity, this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-level details beyond what the schema already documents, so no extra credit is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('register') with a clear resource ('custom event in the event registry') and a prerequisite. It distinguishes from siblings like list_event_registry, get_event_registry_entry, and fire_event by making the creation aspect explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool, noting it requires SCRIPTING_ENABLED=true. It doesn't explicitly mention alternatives or exclusions, but the purpose is clear within the event toolset, and the prerequisite serves as a usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reject_requestAIdempotent
Reject a pending approval request (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the approval record | |
| comments | Yes | Reason for rejection (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds a behavioral condition (WRITE_ENABLED=true) but does not disclose other traits like what happens upon rejection (e.g., state change, notifications). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that conveys the purpose and a precondition. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with two required parameters and no output schema, the description is adequate. It covers the action, target, and a key prerequisite. Could mention the return state or side effects, but not required given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (sys_id, comments) already described in the schema. The description adds no additional semantic meaning beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Reject') and the resource ('pending approval request'). It also includes a prerequisite condition (WRITE_ENABLED=true), which adds specificity. The verb 'reject' distinguishes this from the sibling 'approve_request'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a requirement (WRITE_ENABLED=true) but does not provide explicit guidance on when to use this tool versus alternatives like 'approve_request' or 'cancel_request'. It implies the tool is for pending requests but doesn't specify exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_user_from_groupADestructive
Remove a user from a group (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| member_sys_id | Yes | System ID of the sys_user_grmember record |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false and destructiveHint=true. The description adds the WRITE_ENABLED=true requirement, which is not present in annotations, providing extra context about a necessary precondition. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action immediately and includes a necessary requirement. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter destructive action, the description plus annotations are sufficient. It could mention the irreversible nature or what happens if the user is not in the group, but these are not critical for invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides full coverage of the single parameter member_sys_id with a clear description. The tool description adds no additional parameter meaning, so the baseline of 3 applies due to 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Remove' and resource 'a user from a group', clearly distinguishing it from sibling tools like add_user_to_group. The parenthetical adds a requirement without obscuring the core action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives, but the action itself strongly implies its purpose. The WRITE_ENABLED=true condition provides a prerequisite, giving some guidance beyond just the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_incidentADestructive
Resolve an incident with resolution code and notes (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the incident | |
| resolution_code | Yes | Resolution code (e.g., "Solved (Permanently)") | |
| resolution_notes | Yes | Details of how the incident was resolved |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description's mention of 'Resolve' is consistent. The additional context about WRITE_ENABLED is useful but does not go beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence that efficiently conveys the action, resources, and a prerequisite. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple mutation tool with clear schema and annotations. Missing output schema details, but that is acceptable given the context. Could benefit from a brief note on the effect (e.g., 'incident state changes to resolved').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all 3 parameters. The description restates the purpose of the parameters ('resolution code and notes') but does not add new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Resolve an incident') and the required inputs (resolution code and notes). However, it does not differentiate from the sibling tool 'close_incident', which might have a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description mentions a prerequisite ('requires WRITE_ENABLED=true'), which is helpful, but does not provide guidance on when to use this tool vs alternatives like 'close_incident' or 'update_incident'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_problemADestructive
Resolve a problem with root cause and resolution notes (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the problem | |
| root_cause | Yes | Root cause of the problem | |
| resolution_notes | Yes | How the problem was resolved |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the prerequisite 'requires WRITE_ENABLED=true' beyond the annotations, which notes that the tool is destructive (destructiveHint=true) and not read-only. However, it does not disclose other behavioral traits like the irreversibility of the action or side effects, which would be valuable for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose ('Resolve a problem with root cause and resolution notes') and includes a critical prerequisite in parentheses. Every word earns its place; no unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 required string parameters) and the presence of annotations covering readOnlyHint and destructiveHint, the description is mostly complete. However, it does not mention the return value or confirm whether the operation is reversible, which could be useful. Still, overall good completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for all three parameters (sys_id, root_cause, resolution_notes), achieving 100% schema coverage. The description does not add any additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'resolve', the resource 'problem', and the required fields (root cause, resolution notes). It distinguishes this tool from siblings like 'update_problem' or 'get_problem' by indicating a specific action (resolution) and a prerequisite (WRITE_ENABLED=true).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite (WRITE_ENABLED=true), which is helpful, but it does not explicitly state when to use this tool versus alternatives like 'update_problem' or 'close_problem' (if such exists). The context is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_archived_recordBDestructive
Schedule a one-time standard ServiceNow restore for one archive log entry. The archive row is removed after successful restore. [Destructive]
| Name | Required | Description | Default |
|---|---|---|---|
| confirmation | Yes | Required: I_UNDERSTAND | |
| archive_log_sys_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds genuinely new context: the restore is scheduled asynchronously (one-time), and crucially the archive row is removed after a successful restore. That tells the agent the operation consumes/removes the source archive entry, which the annotations alone do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the destructive disclosure front-loaded at the end as a clear flag; nothing is padded. The bolded [Destructive] marker slightly duplicates destructiveHint, but it is a useful reinforcement for a high-risk call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an open-world, non-idempotent mutation with no output schema, the description omits what the caller gets back, how long the scheduled restore takes, and how to verify completion. It covers the destructive consequence well but leaves the follow-up workflow unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the description says nothing about either parameter. The confirmation sentinel is documented in the schema and archive_log_sys_id is largely self-explanatory by name, so the gap is tolerable, but the description adds no meaning about which archive log entry qualifies or what happens on a bad id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Schedule a one-time standard ServiceNow restore for one archive log entry"), which is unambiguous against the other archive siblings such as list_archive_rules or create_destroy_rule. It does not explicitly name a sibling or contrast with get_archive_restore_status, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this vs. alternatives, no prerequisites (e.g. that an archive rule must have moved the record first), and no pointer to get_archive_restore_status for tracking the scheduled job. The agent must infer all of that from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retire_assetADestructive
Retire an IT asset (mark as disposed/retired). [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Asset sys_id | |
| disposal_date | No | Disposal date (YYYY-MM-DD) | |
| disposal_reason | No | Reason for retirement |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the description doesn't need to restate safety. It does add the clarification that the operation 'marks' the asset as disposed/retired rather than deleting it, which is valuable. However, it does not disclose other behavioral traits like reversibility, required permissions, or side effects beyond the state change.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence plus a '[Write]' tag. It is front-loaded with the key action and resource, with no unnecessary words. This is an example of efficient, minimal description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple write tool with full schema coverage and annotations, the description is sufficiently complete. It clearly states the action and its effect. However, since there is no output schema, a note about what the tool returns (e.g., updated record or success flag) would have been helpful but is not critical for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all parameters, covering 100% of the semantic meaning. The tool description does not add any additional parameter-related context, so the baseline score of 3 for high schema coverage is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Retire') and resource ('IT asset'), with a clarifying parenthetical ('mark as disposed/retired'). This clearly distinguishes it from sibling tools like update_asset or delete_record, which serve different lifecycle actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended usage is implied by the name and description: use when you want to retire an asset. However, there is no explicit guidance on when to use this instead of alternatives such as update_asset or track_asset_lifecycle, nor any mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retire_knowledge_articleADestructive
[Write] Retire a knowledge article (mark as outdated)
| Name | Required | Description | Default |
|---|---|---|---|
| article_id | Yes | Article number (KB...) or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a destructive write operation (readOnlyHint=false, destructiveHint=true). The description adds value by specifying that retiring means 'mark as outdated', which clarifies the exact nature of the operation. However, it does not disclose additional side effects or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence, front-loaded with the action, and contains no redundant words. It is efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the core purpose and effect. It could be enhanced with usage context, but given the simplicity and annotations, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the single parameter article_id with its format (KB... or sys_id), and the description adds no additional parameter information. With 100% schema coverage, the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Retire' with the resource 'knowledge article' and clarifies the meaning as 'mark as outdated'. This distinguishes it from sibling tools like update_knowledge_article or publish_knowledge_article.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention scenarios, prerequisites, or when not to use it. The only implicit context is the tool name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_update_set_best_practicesARead-onlyIdempotent
Read-only PoC review of Update Set payloads by sys_id, Australia only. Defaults: AU-BR-001/002 and AU-CL-004. Explicit BR opt-ins: AU-QRY-001 (literal addQuery LIKE, not encoded queries), AU-BR-004 (script variable declarations), AU-BR-005 (before BR post-abort processing), AU-BR-007 (stored before_display current writes). Explicit Client Script opt-in AU-CL-006: bounded g_form setMandatory/setVisible/setDisplay/setReadOnly calls as UI Policy considerations. Complex logic and UI constraints are not blanket violations or automatic exemptions; suitability/order/UI compatibility need review. Never auto-migrate or add return/update. Source-free low-confidence candidates with official sources, not certification. Unresolved evidence prevents analysis_complete. selection_mode=review_targets returns 0.3; omitted/bounded_all keeps 0.2. ACL-before-limit/coarse prefixes can hide targets. Zero findings never establish safety. Limits: 100 metadata rows plus lookahead, 60 seconds. No code execution/external LLM lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | ||
| max_records | No | ||
| selection_mode | No | ||
| update_set_sys_id | Yes | ||
| requested_rule_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses hard limits (100 metadata rows plus lookahead, 60 seconds), safety guarantees (no code execution, no external LLM lookup, never auto-migrate), confidence semantics (source-free low-confidence, not a certification), and that zero findings never establish safety. This is unusually rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded correctly, but the remainder is a dense, telegraphic block mixing defaults, rule names, caveats and limits with no sentence structure or grouping. Much of it earns its place, but readability suffers and key clauses blur together.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, rule-driven review tool with no output schema, the description supplies limits, safety guarantees and confidence caveats so an agent can call it and interpret results. The unexplained selection_mode scores and uncovered 'instance' parameter are the main remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It covers requested_rule_ids and selection_mode fairly well, but the '0.3' vs '0.2' values are never explained, the 'instance' parameter is only implied by 'Australia only', and max_records is only indirectly referenced via the row limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read-only review), resource (Update Set payloads) and scope (by sys_id, Australia only). The nature of the tool is clear, but acronyms like 'PoC' and the 'AU-BR/AU-CL' rule codes are unexplained, and the description never names the sibling tools it differs from (e.g. preview_update_set, scan_update_set_sca).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides default rules (AU-BR-001/002, AU-CL-004) and instructs on opt-ins via requested_rule_ids, plus selection_mode tradeoffs, so intended usage is inferable. However there is no explicit statement of when NOT to use it versus the update-set siblings (preview, scan, export), leaving routing ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_deploymentADestructive
Rollback a deployment by reverting an update set. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Reason for rollback | |
| update_set_sys_id | Yes | Committed update set sys_id to rollback |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, covering the safety profile. The description adds the mechanism 'reverting an update set,' which provides some behavioral context beyond the name, but does not mention consequences, reversibility, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the action and mechanism. There is zero wasted text, and the '[Write]' tag is redundant but harmless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only 2 parameters, schema covers them fully, and annotations provide the destructive hint. The description adequately covers purpose and mechanism. However, it lacks any note on expected outcome or edge cases, which is a minor gap for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters with descriptions (100% coverage). The description itself does not add any extra meaning about the parameters, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Rollback a deployment by reverting an update set.' The verb 'rollback' and resource 'deployment' are explicit, and the mechanism 'reverting an update set' distinguishes it from generic rollback or other deployment tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like rollback_changes or validate_deployment. It does not mention any prerequisites, exclusions, or preferred use cases, leaving the agent without context to choose appropriately among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_aggregate_queryBRead-onlyIdempotent
Run a grouped aggregate (COUNT, SUM, AVG) query on any table (latest release: /api/now/stats/{table})
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max groups (default: 20) | |
| query | No | Optional encoded query filter | |
| table | Yes | Table to query (e.g., "incident", "task_sla") | |
| group_by | Yes | Field to group results by (e.g., "priority", "state", "assignment_group") | |
| aggregate | No | Aggregate function: COUNT (default), SUM, AVG, MIN, MAX |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint, so the description doesn't need to restate safety. The description adds the aggregate function list and API endpoint, but the omission of MIN/MAX from the description is a minor inconsistency with the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, efficient but could include more context without being verbose. It earns a 4 for being tight but not maximally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is missing details on return values and output format, which is not covered by output schema (none). For a 5-parameter tool, more complete guidance would help the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds minimal value. The description does not elaborate on parameter usage beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a grouped aggregate (COUNT, SUM, AVG) query on any table, making its purpose distinct from list or record tools. However, it omits MIN and MAX which are in the schema, slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for aggregate queries but provides no explicit guidance on when to use this tool versus alternatives like list_incidents or query_records. No when-not-to-use or alternative naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_atf_suiteA
Execute an ATF test suite (requires ATF_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the test suite |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only, not idempotent, and not destructive. The description adds the prerequisite ATF_ENABLED=true, which is useful configuration context. However, it does not disclose what executing a suite entails (e.g., running multiple tests, generating results) or how the outcome is returned, leaving the behavioral profile thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential purpose and a prerequisite. Every word earns its place, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain return behavior or next steps, but it does not. It fails to mention that running a suite may produce test results retrievable via get_atf_suite_result, nor does it note potential side effects or blocking behavior. For an execution tool, this is a significant omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides a complete description of the single parameter sys_id (System ID of the test suite), covering 100% of parameter semantics. The description does not add any additional meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Execute' with the resource 'ATF test suite', which clearly distinguishes it from siblings like run_atf_test, list_atf_suites, and get_atf_suite. The added prerequisite (ATF_ENABLED=true) further clarifies the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (to run an ATF suite) and states a required condition (ATF_ENABLED=true). However, it does not explicitly contrast with related tools like run_atf_test or mention when to prefer one over the other, so it lacks all exclusion guidance but is still clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_atf_testA
Execute a single ATF test (requires ATF_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the test |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only, open-world, non-idempotent, and non-destructive behavior. The description adds the prerequisite ATF_ENABLED=true, which is useful context, but it does not disclose potential side effects, response format, or whether execution is synchronous. With annotations carrying the safety profile, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action and resource, with the prerequisite neatly parenthesized. There is zero redundant text, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the core purpose and a key prerequisite. It does not mention how to access results (e.g., via get_atf_test_result), but that is not strictly necessary given the low complexity and available sibling tools. Slightly more context about expected outcomes would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with a description for the only parameter (sys_id as 'System ID of the test'). The description adds no additional parameter meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Execute') and clearly identifies the resource ('a single ATF test'), which distinguishes it from sibling tools like run_atf_suite (single vs. suite). The phrase 'single' explicitly narrows scope, avoiding ambiguity with list/get operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a clear prerequisite: 'requires ATF_ENABLED=true', which is a useful when-to-use condition. However, it does not explicitly mention alternatives or when-not-to-use cases, though the sibling tool names (e.g., run_atf_suite) imply the distinction. The context is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_discovery_scanB
[CMDB Write] Trigger a ServiceNow Discovery scan for network/infrastructure
| Name | Required | Description | Default |
|---|---|---|---|
| mid_server | No | Optional MID server sys_id — pins the schedule to this specific MID | |
| schedule_id | Yes | Discovery schedule sys_id to run |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, and the "[CMDB Write]" tag merely echoes the write hint. The phrase "trigger a Discovery scan" does convey a real external action, but the description omits that the scan is likely asynchronous, whether repeat calls launch duplicate scans, and what comes back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the write classification front-loaded and no filler. The trailing "for network/infrastructure" adds little, but nothing is wasted overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent, open-world write with no output schema, the description should say whether a run is started and a run id returned, and whether results are retrievable via list_discovery_runs. The safety profile is covered by annotations, but the post-invocation story is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both schedule_id (required) and optional mid_server are fully documented in the schema, and the description adds no syntax, format, or MID-pinning semantics beyond it. A baseline 3 is appropriate when the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"[CMDB Write] Trigger a ServiceNow Discovery scan for network/infrastructure" gives a specific verb (trigger) and resource (Discovery scan), and the write tag separates it from read-only siblings like list_discovery_runs and list_discovery_schedules. It stops short of explicitly naming the relevant sibling, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never states when to use this versus list_discovery_schedules (inspect first), list_discovery_runs (check results), or trigger_scheduled_job. No prerequisites, no note on when a MID server pin is warranted, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_security_playbookA
Start a Security Incident Response playbook (a Process Automation Designer definition in the sn_si_aw scope) against a security incident, the same way the SIR Analyst Workspace does: sn_playbook.PlaybookExperience.triggerPlaybook(). Schedules a one-time server script, so it requires SCRIPTING_ENABLED=true. Skips if that playbook is already queued or in progress on the incident. Set wait_seconds to poll for the resulting execution (sys_pd_context). [Scripting]
| Name | Required | Description | Default |
|---|---|---|---|
| playbook | No | Playbook sys_id or scoped name (sys_pd_process_definition.name, e.g. "security_incident_malware_manual_template_v1"). See list_security_playbooks. | |
| wait_seconds | No | Poll sys_pd_context for the new execution for up to this many seconds (0-180, default 0 = return right after scheduling). | |
| incident_sys_id | Yes | Security incident (sn_si_incident) sys_id to run against | |
| playbook_sys_id | No | Alias of playbook (accepted for compatibility). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond annotations: it schedules a one-time server script, requires SCRIPTING_ENABLED=true, skips when already queued or in progress, and uses wait_seconds to poll the resulting sys_pd_context. These details cover side effects, prerequisites, and duplicate-avoidance that the annotations do not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action and resource, then layers prerequisite, skip behavior, and polling in a compact sequence. The technical density is appropriate and no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating scripting tool with no output schema, it covers the key operational context: required scripting flag, duplicate-skip behavior, and polling semantics. It could say more about the returned execution information or failure behavior, but is otherwise complete enough to invoke safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter meaning is already documented in the input schema. The description restates wait_seconds polling and points to list_security_playbooks, but adds little beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb/resource pair: start a Security Incident Response playbook against a security incident. It also names the underlying mechanism (sn_playbook.PlaybookExperience.triggerPlaybook) and scope (sn_si_aw), so it is distinguishable from list_security_playbooks and generic flow tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Makes the intended context clear: run this against a security incident, the same way SIR Analyst Workspace does. It does not explicitly compare against alternatives such as trigger_agentic_playbook or state when not to use it, so it stops short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_transform_mapA
Request a Transform Map run on an Import Set by creating a sys_import_set_run record; whether this starts the transform is not verified (requires WRITE_ENABLED=true; also SCRIPTING_ENABLED=true when the map runs scripts or targets a protected platform table such as sys_*/sp_*)
| Name | Required | Description | Default |
|---|---|---|---|
| import_set_sys_id | Yes | sys_id of the Import Set containing source data | |
| transform_map_sys_id | Yes | sys_id of the Transform Map to run |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: it explains that the tool creates a sys_import_set_run record, that whether this starts the transform is not verified, and what environment flags are required. These caveats are critical for a non-idempotent, open-world mutation and are exactly what an agent needs before invoking it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and the record creation, followed by the key caveats. It is dense but every clause carries useful information, though the parenthetical prerequisite list makes it slightly harder to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutating tool with no output schema, the description covers the important operational caveats and prerequisites. It could say more about what is returned or what failure looks like, but the essential behavioral uncertainty is disclosed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents both required parameters. The description reinforces the domain context but does not add parameter-level details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: request a Transform Map run on an Import Set by creating a sys_import_set_run record. It is clear what the tool does, but it does not explicitly differentiate itself from nearby tools such as list_transform_maps, get_transform_map, list_import_sets, or get_import_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the required transform_map_sys_id and import_set_sys_id parameters, and the description gives important prerequisite conditions (WRITE_ENABLED=true, SCRIPTING_ENABLED=true in some cases). However, it does not explicitly say when to use this tool versus 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.
scan_update_set_scaB
Read-only SCA scan for an Update Set. Inventories script-bearing changes and returns normalized, exact-version component metadata with hashed evidence only; source code is never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| update_set | Yes | Update Set sys_id (32 hexadecimal characters) or an exact Update Set name | |
| max_records | No | Maximum update XML records to inspect (1-100; default 50). The result says when it is truncated. | |
| lookup_vulnerabilities | No | Query OSV for each exact-version npm component (default true). Set false to perform local collection only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description declares 'Read-only', but annotations set readOnlyHint=false, a direct conflict that an agent must resolve before calling (likely explained by openWorldHint=true and the external OSV lookup, but that is never said). Setting that aside, it does add real behavioral value: hashed evidence only, source code never returned, exact-version matching. The contradiction still undermines trust in the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight, front-loaded sentences with no filler; the scope ('Read-only') and the key output constraint ('source code is never returned') both land immediately. Jargon density (SCA, hashed evidence) is high but each phrase carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still conveys the return shape (component metadata, hashed evidence, no source) and truncation behavior is covered by the schema's max_records note. What it omits is the external-dependency behavior (OSV reachability/timeouts) and any error behavior for an unknown update set name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (update_set, max_records, lookup_vulnerabilities) are already fully documented in the schema, and the description adds no parameter-level detail. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('SCA scan for an Update Set') and disambiguates the output ('normalized, exact-version component metadata with hashed evidence only'), which separates it from siblings like review_update_set_best_practices or preview_update_set. It never names a sibling explicitly, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to run this versus the other update-set tools (preview_update_set, review_update_set_best_practices, scan_vulnerabilities) and no stated preconditions such as needing a committed or exported set. The only conditional advice ('Set false to perform local collection only') lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_vulnerabilitiesA
Create a Vulnerability Response scan (sn_vul_scan) for a set of CIs or Vulnerable Items and hand it to the active scanner integration, the same way the "Initiate Scan" / "Rescan" actions do. Needs an active scanner (sn_vul_scanner, e.g. Qualys/Tenable/Rapid7) unless initiate=false, which leaves a Draft scan to launch from the UI. Runs as a server script in a run-once job (SCRIPTING_ENABLED) because the scan state and target links are not writable through the Table API. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| initiate | No | true (default): set the scan to Processing so the scanner integration picks it up. false: leave it in Draft. | |
| ci_sys_ids | No | cmdb_ci sys_ids to scan (max 200). Use this or vulnerable_item_sys_ids, not both. | |
| wait_seconds | No | How long to wait for the run-once job that creates the scan (0-120, default 30). If it has not run by then the job is left scheduled and scan_scheduled is returned. | |
| scanner_sys_id | No | sn_vul_scanner sys_id. Defaults to the active scanner flagged as default. | |
| vulnerable_item_sys_ids | No | sn_vul_vulnerable_item sys_ids to rescan (max 200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the execution mechanism (server script in a run-once job requiring SCRIPTING_ENABLED because scan state and target links aren't writable via the Table API), the scanner prerequisite, the Draft-vs-Processing state effect of initiate, and the [Write] marker. This is exactly the operational context an agent needs before invoking a non-idempotent write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and mechanism in the first sentence, then prerequisites and state behavior, with the [Write] tag closing it out. Dense but every clause carries information; the parenthetical detail makes it slightly heavy but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent write with no output schema, the description covers prerequisites, execution model, and state side effects. It does not describe what is returned (scan sys_id, scan_scheduled), though the schema's wait_seconds note hints at the latter — a minor gap against an otherwise strong definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters including initiate's default and wait_seconds' range. The description only reinforces initiate and the scanner requirement; it adds no syntax or mutual-exclusion detail beyond what the schema states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create) and resource (Vulnerability Response scan, sn_vul_scan) and names the exact table targets (CIs or Vulnerable Items), plus the analog UI actions 'Initiate Scan'/'Rescan'. An agent knows precisely what this produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the prerequisite (an active sn_vul_scanner such as Qualys/Tenable/Rapid7) and the alternative mode (initiate=false leaves a Draft to launch from the UI). It also clarifies the either/or selection of ci_sys_ids vs vulnerable_item_sys_ids. No sibling-tool comparison is offered, but no direct vulnerability-scan alternative appears in the sibling list, so this is close to complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_cab_meetingC
[Write] Schedule a Change Advisory Board (CAB) meeting
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ISO date for the CAB meeting | |
| attendees | No | Comma-separated group names | |
| change_id | Yes | Change request number (CHG...) or sys_id | |
| duration_minutes | No | Meeting duration in minutes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-idempotent, non-destructive operation. The description only adds the redundant '[Write]' prefix and the verb 'Schedule', without disclosing what scheduling entails (e.g., whether invites are sent, whether the change record is updated, or what response is returned). This fails to add meaningful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no fluff. It is appropriately front-loaded with the verb. However, the inclusion of '[Write]' is slightly redundant given the annotations, but overall it is concise and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema and 4 parameters, the description is too thin. It does not explain what a successful scheduling does, how attendees are handled, whether the change_id is required to exist, or what happens on failure. The agent lacks essential context to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 4 parameters have individual descriptions. The tool description adds no extra parameter semantics, which is acceptable when the schema is self-sufficient. Baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Schedule' and the resource 'Change Advisory Board (CAB) meeting'. It is a specific verb+resource pair that distinguishes it from sibling tools like create_change_request or list_* tools. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives. It does not mention prerequisites, typical scenarios, or exclude cases. With many sibling tools for change management, the agent receives no decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_notificationC
[Write] Schedule a notification for future delivery
| Name | Required | Description | Default |
|---|---|---|---|
| active | No | Whether the notification is active | |
| schedule | Yes | Cron expression or ISO date | |
| notification_id | Yes | Notification rule sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the prefix '[Write]' which simply restates the readOnlyHint=false annotation, and 'future delivery' adds minimal behavioral context. It does not disclose side effects, required permissions, error behavior, or whether this replaces existing schedules. Given annotations already indicate a write operation, the description provides no additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that communicates the core purpose without waste. It is appropriately sized, though it omits potentially valuable detail. No redundancy or structural issues.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three parameters and no output schema, the description does not explain return values, error conditions, or scheduling semantics (e.g., cron vs ISO date behavior). The lack of usage guidance and behavioral detail makes this incomplete for a non-trivial write operation, especially given the large sibling tool context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with descriptions (100% coverage), so the schema is the primary source of parameter meaning. The description itself does not mention any parameter details or add further insight, matching the baseline score of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'schedule' with resource 'notification' and the scope 'for future delivery', making the primary purpose unambiguous. However, it does not explicitly distinguish this from sibling tools like create_notification or trigger_scheduled_job, which could be similar in function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as send_push_notification or schedule_cab_meeting. No context, prerequisites, or exclusions are provided, leaving the agent without decision support for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_catalogARead-onlyIdempotent
Search the service catalog for items matching a keyword
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 10) | |
| query | Yes | Search keywords |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already convey that the tool is read-only, idempotent, and open-world. The description adds minimal behavioral insight beyond stating that it performs a search. It does not discuss pagination, return format, or any side effects, but given the annotations, the description is adequate but not enriching.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is extremely concise and front-loaded. It contains no redundant information and efficiently communicates the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, explicit annotations), the description is sufficiently complete. It could mention that it returns matching items or a default result format, but the schema covers the limit parameter. Overall, it provides a clear and adequate summary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameters with descriptions (100% coverage). The tool description adds no additional meaning to the parameters; it merely repeats the purpose. According to the baseline rule, a score of 3 is appropriate when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'service catalog', making the tool's purpose unmistakable. It distinguishes itself from sibling search tools by specifically mentioning 'service catalog', which is different from other search targets like CMDB CI or knowledge articles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternative search tools (e.g., ai_search, search_cmdb_ci). The usage context is implied only by the resource name, leaving the agent to infer its applicability without exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cmdb_ciBRead-onlyIdempotent
Search for configuration items (CIs) in the CMDB
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max CIs (default: 10, max: 100) | |
| query | No | Encoded query (e.g., "sys_class_name=cmdb_ci_server") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description's burden is lower. However, it adds no extra behavioral context (e.g., query syntax limitations, performance). It neither contradicts nor significantly enhances the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately conveys the action. It is concise and front-loaded, though it could be slightly expanded to include a note about query format without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the encoded query parameter and the absence of an output schema, the description lacks completeness. It does not explain how to construct queries (e.g., 'sys_class_name=...'), mention pagination, or describe the response format. This is a significant gap for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for both parameters. The description does not add further meaning or examples beyond what the schema provides, so it meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (search) and the resource (configuration items in CMDB). It is specific but does not differentiate from sibling tools like get_cmdb_ci or list_relationships, though the function is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_cmdb_ci for specific items or import_cmdb_data for bulk operations. There is no mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_knowledgeARead-onlyIdempotent
Search knowledge base articles by keyword
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max articles (default: 10) | |
| query | Yes | Search keywords or phrase | |
| knowledge_base | No | Optional: filter by knowledge base sys_id or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, openWorld. Description adds no behavioral context beyond the schema. No mention of pagination, result format, or scope of search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and resource. Zero waste, efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple search tool, but lacks details on result ordering, pagination defaults, or behavior when no results found.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions. Description does not add extra meaning beyond 'by keyword' aligning with query param. Baseline score appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Search' and resource 'knowledge base articles' with method 'by keyword'. Clearly distinguishes from sibling tools like natural_language_search and ai_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like ai_search or natural_language_search. Usage is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_store_appsARead-onlyIdempotent
Search the public ServiceNow Store catalog by keyword (no instance auth needed). Returns listing_id values usable with get_store_app_versions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 10, max 50) | |
| query | Yes | Search keywords, e.g. "vulnerability response" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and open-world behaviour, so the description's added value is the auth disclosure ("no instance auth needed") and the identification of what the call yields (listing_id). That is real context an agent cannot get from the structured fields, though rate limits and result-shape detail are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the scope and auth caveat front-loaded and the output/next-step information delivered last. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter lookup with no output schema, the description supplies exactly the missing pieces: what corpus is searched, that no instance credentials are required, that results are listing_id values, and which tool consumes them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: query has an example and limit has its default and maximum documented. The description only restates that querying is keyword-based without adding syntax, matching rules, or sorting semantics, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) applied to a specific resource (the public ServiceNow Store catalog) with the search mode (by keyword). It also names the follow-up sibling get_store_app_versions, so an agent can instantly tell this is the catalog-lookup half of a two-step flow rather than an installed-app or upgrade tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"No instance auth needed" plus the pointer to get_store_app_versions gives clear context for when this tool is the right entry point. It stops short of explicitly excluding neighbours like list_scoped_apps (installed apps) or check_app_upgrade, so the boundary is implied by "public catalog" rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_system_propertiesARead-onlyIdempotent
Search system properties by name, value, or description
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| search | Yes | Search text matched against name, value, and description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint, which adequately disclose safety. Description adds that search is performed on name, value, and description, but does not elaborate on return behavior or edge cases like case sensitivity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence clearly stating purpose with no redundant words. Front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with only two parameters and full schema coverage, the description is adequate but lacks details such as case sensitivity, pagination behavior beyond limit, or return format. Could be slightly more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters thoroughly. Description mentions 'name, value, or description' which matches the search parameter's description, adding no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Search' on resource 'system properties' by name, value, or description. It distinguishes from siblings like list_system_properties (lists all) and get_system_property (gets specific) by focusing on search functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as list_system_properties or get_system_property. No when-not-to or context provided, leaving the agent to infer usage without explicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emergency_broadcastC
[Write] Send emergency broadcast notification to users or groups
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Message body | |
| subject | Yes | Broadcast subject | |
| channels | No | Delivery channels: email,sms,push | |
| recipients | Yes | Comma-separated user/group sys_ids |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is a write operation (readOnlyHint=false) and open world. The description adds only '[Write]' which is redundant with annotations, and provides no additional behavioral context such as effects, rate limits, or delivery expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, but the '[Write]' prefix is unnecessary and adds clutter. It is concise but not well-structured, and the single sentence misses important details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of sending emergency broadcasts (multiple recipients, channels), the description is incomplete. It does not explain return behavior, delivery confirmation, or any prerequisites. No output schema exists to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema; parameters like 'recipients' and 'channels' are not elaborated on.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends emergency broadcast notifications to users or groups, with a specific verb and resource. However, it does not differentiate from the sibling 'send_push_notification' or other notification tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, or any usage context. The description lacks any 'when' or 'when not' instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_push_notificationA
UNSUPPORTED: push delivery requires a validated notification workflow. No queue insert or delivery is performed. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Notification body text | |
| user | No | Target user sys_id | |
| group | No | Target group sys_id (alternative to user) | |
| title | Yes | Notification title | |
| action_url | No | Deep link URL on tap |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Strong disclosure beyond the annotations: no queue insert, no delivery, and a stated prerequisite. Slight tension with the structured hints (readOnlyHint=false and the '[Write]' label) since the description says no write actually occurs, but the description is clarifying behavior rather than contradicting it outright.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences, front-loaded with the unsupported status, and the write marker at the end. Minimal waste; the '[Write]' tag is a useful scannable signal rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a disabled stub the description covers the essential 'do not rely on this' message, but it omits the single most actionable piece of context: which tool to use instead. With no output schema, that routing information is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters have 100% schema description coverage (title, body, user, group, action_url), so the schema carries the semantics. The description adds nothing about parameter meaning, which is acceptable at this coverage level but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (push delivery) and immediately states the defining fact: it is UNSUPPORTED and performs no queue insert or delivery. This distinguishes it from a working notification tool, though it never says what the tool would send or to whom beyond the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a prerequisite signal ('requires a validated notification workflow'), which tells the agent the tool cannot be used standalone, but it names no concrete alternative despite siblings such as schedule_notification, create_notification, and send_emergency_broadcast existing. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_mapping_summaryARead-onlyIdempotent
View service dependencies and related CIs for impact analysis
| Name | Required | Description | Default |
|---|---|---|---|
| service_sys_id | Yes | System ID of the business service |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true. Description adds context about 'impact analysis' but no additional behavioral traits. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single, well-structured sentence that efficiently communicates the tool's purpose. No redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (one parameter, no output schema, good annotations), the description is adequately complete. It covers the core functionality, though it could mention return format or pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the single parameter 'service_sys_id' is 100%, with a description. The tool description adds no extra meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'View service dependencies and related CIs for impact analysis', specifying verb and resource. It distinguishes from siblings like 'cmdb_impact_analysis' by focusing on 'mapping summary', but does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. The description implies usage for impact analysis, but does not state when not to use or provide alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_archive_rule_activeAIdempotent
Activate or deactivate an archive rule. Activation requires confirmation and an active Data Management Policy. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| active | Yes | ||
| sys_id | Yes | ||
| confirmation | No | Required when activating: I_UNDERSTAND |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish write/idempotent/non-destructive/open-world, so the description doesn't need to re-declare safety. It adds genuine extra context the annotations lack: the confirmation gate and the dependency on an active Data Management Policy, which materially affects whether a call will succeed. It stops short of saying what error surfaces when the policy is inactive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences plus a write tag; the action is front-loaded and every clause carries information (permission gate, policy prerequisite). Slightly terse for a mutation, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-state toggle with annotations covering the safety profile and the schema specifying the confirmation value, the description supplies the key prerequisites an agent needs. Missing only failure-mode detail, which is minor given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only `confirmation` is described, with the 'I_UNDERSTAND' value). The description ties confirmation to the activate case but adds nothing about `sys_id` or the `active` boolean beyond what the parameter names imply, so it does not fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (activate/deactivate) and resource (archive rule), which is far better than a generic 'update'. The distinct name and the sibling set (create_archive_rule, set_destroy_rule_active, set_cleanup_rule_active) make the target obvious, though the description never explicitly names those siblings to route away from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It surfaces two real preconditions for the activate path — confirmation and an active Data Management Policy — which is useful context for choosing to call it. However, it gives no guidance on the deactivate path's requirements or on when to pick this over set_destroy_rule_active/set_cleanup_rule_active, leaving usage largely implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cleanup_rule_activeADestructive
Activate or deactivate a Table Cleanup Rule. Activation requires confirmation; matching live records are permanently deleted. [Destructive]
| Name | Required | Description | Default |
|---|---|---|---|
| active | Yes | ||
| sys_id | Yes | ||
| confirmation | No | Required when activating: I_UNDERSTAND |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description earns credit for adding detail annotations cannot convey: activation demands a confirmation token and matching live records are permanently deleted. It stops short of explaining whether deactivation is safe/reversible or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences plus a bracketed warning; the destructive consequence is placed prominently and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the definition covers the critical risks (permanent deletion, confirmation requirement) and the activate/deactivate scope. Remaining gaps—deactivation behavior, idempotency, and return value—are minor but real.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, and the description partially compensates by stating activation requires confirmation, which clarifies the conditional nature of the confirmation parameter. However it says nothing about sys_id (the rule identifier) or that active is a boolean toggle, so roughly the rest of the parameter surface is undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (activate/deactivate) and resource (Table Cleanup Rule), which is immediately distinguishable from generic update tools. However it does not differentiate itself from near-identical siblings such as set_archive_rule_active, set_destroy_rule_active, or set_usem_rule_active, leaving the agent to infer which rule type applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage (toggle a cleanup rule on/off) and flags the destructive consequence, but gives no explicit when-to-use/when-not guidance and never names the sibling tools that target other rule types. An agent knows roughly what it does but must guess at routing among the four set_*_rule_active tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_destroy_rule_activeADestructive
Activate or deactivate a destroy rule. Activation requires confirmation; it permanently deletes eligible archived records. [Destructive]
| Name | Required | Description | Default |
|---|---|---|---|
| active | Yes | ||
| sys_id | Yes | ||
| confirmation | No | Required when activating: I_UNDERSTAND |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds valuable context by saying activation requires confirmation and permanently deletes eligible archived records. It does not describe deactivation behavior or permission requirements, but it meaningfully supplements the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and immediately follows with the critical safety consequence and confirmation requirement. The extra [Destructive] marker is somewhat redundant with annotations but does not harm readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description provides the key warning about permanent deletion and the confirmation requirement. It could be more complete by explaining deactivation effects and the sys_id parameter, but it gives enough for correct and cautious invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description does not compensate for the undocumented sys_id and active parameters. It mentions confirmation for activation, but the schema already defines confirmation as requiring I_UNDERSTAND, so little meaning is added beyond structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair: activating or deactivating a destroy rule. It also discloses the destructive consequence, which clearly distinguishes it from sibling setters such as set_archive_rule_active and set_cleanup_rule_active.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to use the tool by explaining that activation requires confirmation and permanently deletes eligible archived records. However, it does not explicitly compare this tool with sibling alternatives or state when deactivation should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_integration_activeAIdempotent
Enable or disable an integration implementation (sn_sec_int_impl) by sys_id. This turns a security data feed on or off. [Write — requires WRITE_ENABLED=true; admin-level change]
| Name | Required | Description | Default |
|---|---|---|---|
| active | Yes | true to enable, false to disable | |
| sys_id | Yes | 32-char sys_id of the sn_sec_int_impl implementation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by disclosing a runtime precondition (WRITE_ENABLED=true) and the privilege level (admin-level change), plus the real-world consequence of toggling a security data feed. The annotations already cover idempotency, read-only and destructive flags, so the description's added operational context is the value here; it stops short of noting reversibility or audit implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and resource, followed by the domain effect and the write precondition. No filler, and the parenthetical table name and warning tag are efficient use of space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two required params, no output schema, and annotations covering the safety profile, the description supplies what an agent still needs: the target table, the effect of the toggle, and the WRITE_ENABLED/admin gate. It could be stronger by pointing to the sibling that returns sys_ids, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (boolean active with 'true to enable, false to disable'; 32-char sys_id), so the schema carries the weight. The description adds only the table identity (sn_sec_int_impl) and the on/off framing, which is marginal beyond the schema—baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb (enable/disable), the exact resource (integration implementation, table sn_sec_int_impl) and the domain effect ('turns a security data feed on or off'). An agent can distinguish this instantly from read-oriented siblings like list_integration_implementations or get_integration_health without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the wording: it operates by sys_id on an existing implementation and sets a boolean state. However, it never states when to prefer this over alternatives, nor that a sys_id must first be obtained from list_integration_implementations, and gives no when-not guidance (e.g. disabling feeds in production).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_remediation_commitmentAIdempotent
Set the remediation commitment / target date on a Vulnerable Item (remediation_commitment_dt_tm) or Remediation Task (ttr_target_date). [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | 32-char sys_id of the VI or RT | |
| record_type | Yes | Record family: vi (Vulnerable Item), rt (Remediation Task, sn_vul_remediation_task), or vg (Vulnerability Group / task-based Remediation Task, sn_vul_vulnerability) | |
| commitment_date | Yes | Target date/time (YYYY-MM-DD HH:MM:SS) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare the write/idempotent/non-destructive profile, so the bar is lower; the description still adds the WRITE_ENABLED=true gating requirement, which is real operational context not encoded in annotations. It does not describe what happens on date overwrite or whether the record is validated, but that is a minor gap against the existing annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: the action and target fields come first, then the write prerequisite is bolded and appended. Nothing is redundant with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter write tool with no output schema, the description covers the essentials, but it names only VI and RT while the schema's enum also allows 'vg' (Vulnerability Group) — an agent cannot tell what that branch writes to or whether the same date semantics apply. No mention of return value or failure modes either.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real semantic value by mapping the abstract 'commitment_date' parameter to distinct physical columns depending on record family. It leaves the 'vg' enum value's destination field unstated, which slightly undercuts the mapping story.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (set) and names the exact destination fields (remediation_commitment_dt_tm / ttr_target_date) on two named record types, which makes the effect unmistakable. It stops short of distinguishing itself from nearby siblings like update_remediation_task or update_vulnerable_item, which could plausibly also touch these records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to use it (to assign a commitment/target date on a VI or RT) and flags the WRITE_ENABLED=true prerequisite, which is genuinely useful context. There is no explicit 'use this instead of X' routing, so an agent must infer whether update_remediation_task or update_vulnerability is the better choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_system_propertyBIdempotent
Create or update a ServiceNow system property value. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Property name | |
| type | No | Property type: string, integer, boolean, choice, password2, etc. | |
| value | Yes | Property value | |
| description | No | Optional description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint: false) and idempotent (idempotentHint: true). The description adds 'Create or update' and '[Write]', but these do not provide additional behavioral context beyond what annotations convey. No extra details are given about overwriting behavior, type handling, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence plus a tagged indicator, front-loaded with the action and resource. It is concise with no wasteful words. The '[Write]' tag is slightly redundant given annotations but does not detract from clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple property setter, the description conveys the essential purpose, and the schema plus annotations cover parameters and safety. However, it lacks any note about return values, prerequisites like permissions, or differentiation from bulk/import tools. Given the low complexity, this is minimally adequate but not richly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with meaningful descriptions (name, type, value, description), so the baseline of 3 is appropriate. The tool description itself adds no parameter-specific meaning, but it is not required because schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Create or update a ServiceNow system property value.' It is unambiguous and distinguishes from sibling tools like get_system_property or delete_system_property by indicating it performs writes (create/update) on system properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like bulk_set_properties or import_properties. There is no mention of prerequisites, conditions, or exclusions. Only the basic action is stated, leaving the agent without decision support for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_usem_rule_activeAIdempotent
Enable or disable a USEM/VR rule (convenience toggle of the active flag). Not supported for rule types without an active flag (exception_rule, exception_config, calculator_config, risk_field, risk_score_weight) — use update_usem_rule for those. [Write — requires WRITE_ENABLED=true; admin-level config change]
| Name | Required | Description | Default |
|---|---|---|---|
| active | Yes | true to enable, false to disable | |
| sys_id | Yes | 32-char sys_id of the rule | |
| rule_type | Yes | Which rule family to operate on: assignment (sn_sec_wf_assign_rule), remediation_task, remediation_target (TTR/SLA targets), risk_calculator + calculator_rule + risk_field + risk_score_weight + calculator_config (risk scoring), classification + classification_rule, exception_rule + exception_config, rollup (score rollup), approval, auto_close, exclusion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=true, so the description's real contribution is the gating context: it needs WRITE_ENABLED=true and is an admin-level config change. That is meaningful disclosure beyond the structured fields. It stops short of describing failure behavior or confirming the change is trivially reversible by re-toggling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence carrying the action, the scope limit, the escape-hatch sibling, and the write gate. Dense but purposeful; the layered parenthetical plus bracketed tag slightly hurt scannability without adding waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter toggle with full schema coverage, annotations, and no output schema, everything an agent needs is present: what it flips, which rule types it rejects, where to go instead, and the write gate. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantics the schema does not encode: it narrows the 16-value rule_type enum to the subset that actually has an active flag. It adds nothing about sys_id or active, which the schema already documents well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair and resource ("Enable or disable a USEM/VR rule") plus the exact mechanism ("convenience toggle of the active flag"). This clearly separates it from the heavier sibling update_usem_rule and from the other per-family toggles like set_archive_rule_active.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the when-not case with the exact rule types that have no active flag (exception_rule, exception_config, calculator_config, risk_field, risk_score_weight) and routes the agent to update_usem_rule for those. It also states the environment prerequisite (WRITE_ENABLED=true), so selection and prerequisites are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_queryARead-onlyIdempotent
Resolve a natural-language request into a ServiceNow table + encoded query and (optionally) run it. Maps keywords to common tables (incident, change_request, problem, sc_request, sn_vul_vulnerable_item, cmdb_ci, sys_user, …), then infers conditions for priority (P1/critical/high), open vs closed state, "assigned to me"/unassigned, and time windows (today, yesterday, this/last week, this/last month, last N days). Conditions whose field does not exist on the resolved table are dropped and reported in unmatched_intents. Returns the interpretation (table, encoded_query, conditions) plus matching records. Set execute=false to preview the query without running it, or pass table to override resolution.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return when executed (default 10, max 1000) | |
| table | No | Optional: force this table instead of auto-resolving from keywords | |
| execute | No | Run the resolved query (default true). false = preview only. | |
| description | Yes | Natural-language request, e.g. "P1 incidents still open from last month" / "先月の未解決 P1 インシデント" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuinely non-obvious behavior: conditions whose field is absent from the resolved table are silently dropped and surfaced in unmatched_intents. It could go further on how ambiguous requests are resolved when multiple tables match.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph, front-loaded with the core resolve-then-optionally-execute action, followed by the mapping rules and the escape hatches. The parenthetical table list is long but earns its place by telling the agent what auto-resolution covers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, yet the description sketches the return value (interpretation of table, encoded_query, conditions, plus matching records) and the unmatched_intents side channel. Missing only details such as default result volume beyond the schema's limit default, which the schema already covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description still adds value by explaining what the keyword-to-table mapping and condition inference actually do for the required 'description' parameter, and frames 'execute' and 'table' in terms of the resolution workflow rather than merely restating their types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: resolves a natural-language request into a ServiceNow table plus encoded query, and optionally runs it. This clearly distinguishes it from list/query siblings like query_records and trend_query, since the input is NL, not structured filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage modes: 'Set execute=false to preview the query without running it, or pass table to override resolution.' It does not, however, position itself against alternatives like nlq_query, ai_search, or natural_language_search, all of which could plausibly attract the same request.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_change_for_approvalAIdempotent
Move a change request to "Requested" state for approval (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | System ID of the change request |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read, non-destructive, idempotent, open-world operation. The description adds the state transition detail and the WRITE_ENABLED=true requirement, which is useful but does not significantly expand beyond the annotations. The behavioral profile is adequately covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and includes a necessary precondition in parentheses. Every word earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple state transition tool with one parameter and good annotations, the description covers the essential purpose and a key requirement. It does not explain return values (no output schema) or failure modes, but given the simplicity, it is sufficiently complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a clear description for the sole parameter 'sys_id'. The description does not add extra meaning beyond the schema, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Move' and the resource 'change request' with a specific target state 'Requested'. It distinguishes this tool from siblings like approve_request or close_change_request by focusing on the submission for approval action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly defines the use case: moving a change request to 'Requested' for approval. It mentions a prerequisite (WRITE_ENABLED=true) but does not contrast with alternatives or provide when-not-to-use guidance. Given the tool name and sibling context, it is still clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_resolutionARead-onlyIdempotent
Get AI-powered resolution suggestion for an incident based on similar past incidents
| Name | Required | Description | Default |
|---|---|---|---|
| incident_sys_id | Yes | System ID of the incident |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate read-only, idempotent, and open-world behavior. The description adds value by explaining it is AI-powered and based on past incidents, which gives the agent confidence about the nature of the suggestion. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that effectively communicates the tool's purpose without redundant or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is adequate. It could mention the output format (e.g., a text suggestion), but annotations cover safety and idempotency, making it reasonably complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter 'incident_sys_id' with a description. The tool description does not add further meaning beyond what the schema provides. With 100% schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves an AI-powered resolution suggestion for an incident using similar past incidents. It uses a specific verb and resource ('get suggestion') and distinguishes from sibling tools like 'get_incident' or 'resolve_incident'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when a resolution suggestion is needed, but does not explicitly state when to use it versus alternatives (e.g., directly resolving or searching knowledge). No exclusion criteria or usage context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_instanceAIdempotent
Switch the active ServiceNow instance for this session
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Instance name as configured (e.g. "prod", "dev", "customer_a") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=false, and the description adds the session-scoped nature of the switch. However, it does not elaborate on side effects or prerequisites, so it only partially adds behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no filler. Every word contributes to the meaning and the description is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one fully documented parameter and no output schema. The description is sufficient for an agent to understand the operation's purpose and scope, though it does not reference how to list available instances.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single 'name' parameter with a clear description and example values. The tool description adds no additional parameter information, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (switch), the target (active ServiceNow instance), and the scope (for this session). It distinguishes from sibling tools like get_current_instance or list_instances by focusing on changing the active instance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating the action, but does not explicitly explain when to choose it over alternatives or mention any exclusions. Since the context is clear and the operation is distinct from related tools, this is a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_update_setAIdempotent
Switch the active Update Set context to a specified Update Set. [Scripting]
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | sys_id of the target Update Set |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral detail beyond what the annotations already convey. It does not mention side effects, return values, or any prerequisites. Since the annotations already indicate this is not read-only, not destructive, and idempotent, the description provides no additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the tool's purpose without any filler or repetitive content. It is appropriately sized for the simple action it describes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and annotations present, the description adequately states the action. It is a lightweight context-switching operation, so the minimal description is sufficient, though it omits any mention of error behavior or effects on the environment beyond the obvious.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the only parameter (sys_id) with its description. The tool description adds no extra meaning or context around the parameter, so it does not exceed the schema's coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Switch') and clearly identifies the resource ('active Update Set context') and action ('to a specified Update Set'). It distinguishes this tool from sibling tools like get_current_update_set and ensure_active_update_set by stating the precise operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage through the action described, but provides no explicit guidance on when to use this tool versus alternatives such as ensure_active_update_set or list_update_sets. No exclusions or when-not-to-use conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_flowB
Execute a flow in test mode with sample inputs. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| flow_sys_id | Yes | Flow sys_id to test | |
| test_inputs | No | Test input values |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only and not destructive. The description adds '[Write]' which is redundant with readOnlyHint=false. The term 'test mode' suggests limited side effects, but no concrete behavioral traits (e.g., what gets modified, required permissions, or rollback behavior) are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence followed by a useful marker ('[Write]'), indicating efficient use of space. However, it could be slightly restructured to include guidance on usage without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (two parameters, one nested object) and no output schema, the description should explain what the tool returns or what 'test mode' entails (e.g., whether results are persisted). The description is too sparse to fully inform an agent, and the 'test_inputs' parameter lacks guidance on format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters ('flow_sys_id', 'test_inputs') have descriptions in the schema. The description does not add any additional parameter-level information, meeting the baseline expectation for a fully covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Execute a flow'), the specific mode ('in test mode'), and the type of inputs ('with sample inputs'). It effectively distinguishes this tool from siblings like 'trigger_flow' (presumably for production) and 'publish_flow'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for testing flows, but does not explicitly state when to use it versus alternatives (e.g., 'trigger_flow' for production). No when-not-to-use or prerequisites are mentioned, leaving selection guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_asset_lifecycleC
Track asset lifecycle events and stage transitions
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Transition notes | |
| asset_id | Yes | Asset tag or sys_id | |
| new_stage | Yes | Lifecycle stage: in_stock/in_use/in_maintenance/retired/disposed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations indicate readOnlyHint=false (write operation), but the description says 'track', which is vague and could mislead. It doesn't disclose that the tool likely updates the asset's lifecycle stage, creates a history event, or may have side effects. It also doesn't mention permissions or reversibility. The description fails to add behavioral clarity beyond what annotations already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no fluff, which is appropriately concise. However, it is so terse that it sacrifices clarity. It earns a 4 because it avoids unnecessary words and is front-loaded with the core action, though it could be more specific in the same length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., updated asset, confirmation, event record), what side effects occur (e.g., lifecycle event creation, audit trail), or any conditions like the asset needing to exist. The complexity is moderate (3 params, required fields), but the description leaves critical context missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all three parameters with descriptions, so the baseline is 3. The description's phrase 'stage transitions' loosely aligns with the new_stage parameter, but it adds no extra meaning about parameter formats, defaults, or relationships. Since schema coverage is 100%, the description does not need to compensate heavily.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Track asset lifecycle events and stage transitions' identifies the resource (asset lifecycle) and a verb, but 'track' is ambiguous—it could mean monitor or record, not necessarily mutate. The required 'new_stage' parameter implies an update, but the description doesn't explicitly state that it changes the asset's stage, nor does it clearly differentiate from similar tools like retire_asset or update_asset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. Sibling tools such as retire_asset, update_asset, and create_asset exist, but the description provides no exclusions, prerequisites, or scenarios. The agent must infer usage solely from the parameter names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_deploymentA
Record a deployment event in ServiceNow for audit and velocity tracking. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Deployment notes | |
| status | Yes | Deployment status: success, failed, rolled_back | |
| pipeline | No | Pipeline sys_id or name | |
| environment | Yes | Target environment | |
| artifact_name | Yes | Artifact or application name | |
| artifact_version | No | Version or build number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only confirms a write operation via '[Write]', which is already indicated by readOnlyHint=false. It does not add behavioral context such as authorization requirements, side effects, or duplicate handling. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with just one substantive sentence and a clear write marker. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters and no output schema; the description is minimal but the schema's parameter descriptions and annotations provide additional context. However, it lacks guidance on overall usage flow, prerequisites, or what happens after recording, making it only moderately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All six parameters have schema descriptions with 100% coverage. The tool description does not add additional parameter semantics beyond that, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Record'), the resource ('deployment event in ServiceNow'), and the purpose ('audit and velocity tracking'). This distinguishes it from sibling tools like list_deployments, get_deployment, and rollback_deployment, which have different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context on what the tool does but does not explicitly contrast it with alternatives or provide when-not-to-use guidance. It doesn't mention other deployment tools, so the usage guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trend_queryBRead-onlyIdempotent
Get time-bucketed trend data for a table (useful for monthly/weekly trend charts)
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional encoded query filter | |
| table | Yes | Table name (e.g., "incident") | |
| periods | No | Number of months to look back (1–120, default: 6) | |
| group_by | Yes | Secondary grouping field (e.g., "priority", "state") | |
| date_field | Yes | Date field to bucket by (e.g., "opened_at", "sys_created_on") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety behavior is covered. The description adds little beyond them: it doesn't clarify what the time buckets look like, whether granularity is fixed or derived from the periods value, or how missing date values are handled — and there is no output schema to fall back on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Slightly under-specified rather than overly long, but structurally clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with full schema coverage and annotations, this is close to adequate, but there is a real ambiguity left unaddressed: the description mentions weekly and monthly trends while periods is defined only in months, so an agent cannot tell how bucket width is controlled or what the response rows look like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (query, table, periods, group_by, date_field) is already documented with examples and ranges. The description adds no parameter-level detail, which is acceptable at high coverage but earns only the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (time-bucketed trend data for a table) plus its typical use case. It differentiates somewhat from aggregate/PA siblings by the 'trend' framing, but doesn't name any alternative tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical 'useful for monthly/weekly trend charts' implies the use case, but there is no explicit when-to-use vs. when-not, and no reference to the many overlapping siblings (run_aggregate_query, get_pa_time_series, nlq_query) that also produce aggregated time data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trigger_agentic_playbookB
Invoke an Agentic Playbook — context-aware AI agents that complete tasks autonomously
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | Context key-value pairs to pass to the playbook | |
| playbook_sys_id | Yes | System ID of the Agentic Playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readOnly, non-idempotent, non-destructive. The description adds that it uses context-aware AI agents autonomously, but does not detail side effects or return behavior beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 15 words, front-loaded with key action and resource. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Explains the concept but lacks details on what happens after invocation (e.g., response, asynchronicity, success/failure indicators). With no output schema, more guidance could be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The description does not add additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Invoke an Agentic Playbook — context-aware AI agents that complete tasks autonomously' clearly states the verb and resource, explaining what an Agentic Playbook is. It distinguishes from siblings like 'execute_playbook' by emphasizing 'Agentic', but lacks explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like 'execute_playbook' or 'trigger_flow'. No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trigger_flowA
Trigger a Flow Designer flow with optional input parameters (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| inputs | No | Key-value pairs for flow input variables | |
| flow_sys_id | Yes | sys_id of the flow to trigger |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false), and the description adds the WRITE_ENABLED prerequisite, which is useful. However, it does not disclose whether the flow runs synchronously, returns an execution ID, or what side effects occur. The description goes slightly beyond annotations but lacks richer behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and includes a key prerequisite. Every word earns its place; no redundant or vague phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and the description does not explain what happens after triggering (e.g., whether it returns an execution ID or how to retrieve execution status). Given the existence of sibling tools like get_flow_execution, a more complete description would mention the expected return or follow-up. The description covers the basics but leaves operational gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers both parameters with descriptive text (flow_sys_id as 'sys_id of the flow to trigger' and inputs as 'Key-value pairs for flow input variables'). The description's mention of 'optional input parameters' adds minimal semantic value, aligning with the baseline for 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Trigger a Flow Designer flow with optional input parameters.' It identifies the specific resource (Flow Designer flow) and verb (trigger), distinguishing it from siblings like get_flow or list_flows which merely inspect metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a prerequisite ('requires WRITE_ENABLED=true') but does not explicitly contrast with alternatives such as test_flow or mention when to use this instead of other flow-related tools. The usage context is only implied by the action of triggering, without exclusions or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trigger_scheduled_jobA
Immediately execute a scheduled job on-demand (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| sys_id | Yes | Scheduled job sys_id to trigger |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the WRITE_ENABLED=true requirement, which is useful environmental context. The annotations already indicate the operation is not read-only and not idempotent, so the description doesn't need to restate that. It does not describe side effects or whether a job run is created, but the additional context is on par with baseline expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that is front-loaded with the action and resource, followed by a necessary prerequisite in parentheses. Every word earns its place and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description is reasonably complete for an agent to invoke it. It notes the key requirement (WRITE_ENABLED) and the immediate/on-demand nature. The only minor gap is the lack of detail about return values, but this is not essential for a trigger action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage of the single parameter sys_id with a clear description ('Scheduled job sys_id to trigger'). The tool description adds no further parameter detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('immediately execute') and the resource ('a scheduled job'), and adds the important qualification 'on-demand' which distinguishes this from scheduled/automatic execution. It differentiates from sibling tools like list_scheduled_jobs or get_scheduled_job.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for running scheduled jobs now rather than waiting for the schedule, and it mentions the WRITE_ENABLED=true prerequisite. However, it does not explicitly state when to prefer this over related tools like trigger_flow or how to identify the correct sys_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_aclAIdempotent
Update an existing ACL rule (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Fields to update (active, script, roles, condition, etc.) | |
| sys_id | Yes | ACL sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide safety hints (readOnlyHint=false, destructiveHint=false, idempotentHint=true). The description adds the requirement that SCRIPTING_ENABLED=true must be set, which is useful beyond annotations. However, it does not disclose whether the update merges or replaces fields, nor does it mention potential side effects or permission requirements beyond the scripting flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the action and the requirement. It contains no filler or redundant wording, making it highly concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple update tool, the description covers the core purpose and a critical prerequisite. The schema explains the parameters, and annotations cover safety. It does not describe the return value, but no output schema exists and update tools often return minimal data. The main missing piece is explicit confirmation that only provided fields are updated, but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both `sys_id` and `fields` have descriptions, with `fields` listing examples (active, script, roles, condition). The tool description itself adds no parameter-specific information beyond what the schema already provides, so it stays at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and the resource ('an existing ACL rule'), and the word 'existing' differentiates it from creation tools like create_acl. It also adds a key prerequisite (SCRIPTING_ENABLED=true), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for updating already-existing ACL rules, which distinguishes it from create_acl. It also states a specific prerequisite (SCRIPTING_ENABLED=true). However, it does not explicitly name alternatives or state when not to use this tool, so it lacks full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_alertAIdempotent
Assign or annotate an alert. Allowed fields: assigned_to, assignment_group, work_notes, maintenance, short_description, description, kb. Use acknowledge_alert / close_alert for state changes. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Fields to set | |
| number_or_sysid | Yes | Alert number or sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered; the '[Write]' tag and 'Use acknowledge_alert / close_alert for state changes' merely restate or lightly reinforce that. The one added behavioral fact is that some modifications are out of scope for this tool, but nothing is said about permission requirements, whether repeated calls overwrite or merge, or side effects like notifications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with zero filler: purpose first, then the allowed-field contract, then the sibling routing rule, then a write marker. Every sentence carries information an agent needs before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation with a nested object and no output schema, the description covers purpose, allowed fields and alternative tools, which is adequate. It leaves open what the call returns (the updated alert record?) and what values the untyped nested properties accept, which matters more here because the nested property schemas carry no type information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% at the top level ('Alert number or sys_id', 'Fields to set'), so the baseline is 3. The description enumerates the allowed field keys, but those keys already appear as properties in the nested schema, and the description adds no value semantics the schema lacks (e.g., whether maintenance is a boolean, whether work_notes appends, what format kb expects).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair ('Assign or annotate') applied to a specific resource ('an alert'), and the sibling alert tools are named in the next sentence so the agent can place it in the family. The verb undersells the actual scope slightly, since short_description/description/kb edits are more than assignment or annotation, but the field list immediately corrects that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent elsewhere for lifecycle transitions: 'Use acknowledge_alert / close_alert for state changes.' That is a real when/when-not boundary against the two closest siblings. It does not state preconditions such as required role or that the alert must already exist, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_assetCIdempotent
Update an IT asset record. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Fields to update | |
| sys_id | Yes | Asset sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the '[Write]' marker largely restates structured data. The description adds nothing about what happens to unspecified fields, permission requirements, or side effects (e.g., lifecycle/audit impacts) that annotations don't cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two very short fragments, front-loaded with the action. The '[Write]' marker is mildly redundant with annotations but costs almost nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool over a 15-field nested object with no output schema and no per-field description beyond 'Fields to update'. An agent gets no help on partial-update semantics, field format expectations, or failure modes—the description should carry more of that burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so sys_id and the nested 'fields' object are documented in the schema itself. The description adds no meaning about which of the 15 updatable fields are meaningful or how partial updates behave, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Update an IT asset record'. It is clearly distinguishable from siblings like update_problem, update_user, or create_asset. No scope nuance (which asset types, whether it's CMDB-backed) but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to update vs. create_asset, retire_asset, or track_asset_lifecycle, all of which are siblings. The '[Write]' tag flags the mutation class but does not tell the agent when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_business_ruleBIdempotent
Update a business rule (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: name, collection, when, script, condition, active, order, action_insert, action_update, action_delete | |
| sys_id | Yes | System ID of the rule |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description usefully adds the SCRIPTING_ENABLED feature-flag requirement, but says nothing about whether the update merges or replaces existing rule fields, or whether script compilation errors are rejected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first and the precondition in parentheses; nothing is wasted, though the brevity leaves behavioral gaps that the sentence could have cheaply closed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with full annotations and full schema coverage, the essentials are present. The missing piece is update semantics — partial vs full replacement of the rule definition — which matters for a scripting-bearing object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the nested 'fields' object documents every allowed field, so the schema carries the load. The description adds nothing about sys_id format or update semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (business rule), which distinguishes it from create_business_rule / get_business_rule / list_business_rules siblings. It does not explicitly name those alternatives, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical prerequisite (SCRIPTING_ENABLED=true) is a real gating condition that tells the agent when the call can succeed. However, there is no guidance on when to use this versus create_business_rule or get_business_rule, and no exclusions or workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_catalog_itemBIdempotent
Update an existing catalog item (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Fields to update (name, short_description, price, active, category, etc.) | |
| sys_id | Yes | Catalog item sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, destructive=false, so the safety profile is largely covered. The description adds real value with the WRITE_ENABLED=true precondition, but says nothing about partial-update semantics, whether omitted fields are preserved, or what happens to fields not in the allowed set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the core action front-loaded and the prerequisite parenthesized. It earns its place but is so terse that the parenthetical constraint reads as an afterthought rather than structured guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool whose required 'fields' parameter is a nested object with additionalProperties=false, an agent needs to know whether this is a partial patch or a replace, and how unknown/invalid field names are handled. Neither is addressed, and there is no output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the nested fields object already enumerates name, price, roles, active, category, description, delivery_time and short_description. The description adds nothing beyond the schema, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Update an existing catalog item"), so an agent can distinguish it from create_catalog_item and get_catalog_item in the sibling list. It does not, however, explicitly call out that distinction or what an 'item' contains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage context is the prerequisite WRITE_ENABLED=true. There is no guidance on when to use this versus create_catalog_item, order_catalog_item, or create_catalog_variable, and no indication of what cannot be updated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_change_requestBIdempotent
Update fields on a change request (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Key-value pairs to update | |
| sys_id | Yes | System ID of the change request |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is a non-read-only, idempotent, non-destructive, open-world mutation. The description adds meaningful context by stating the WRITE_ENABLED=true feature-flag prerequisite, which annotations do not cover. However, it does not explain partial-update behavior, whether unspecified fields are preserved, or what happens on invalid field names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted wording, and the prerequisite is clearly parenthesized. It is highly concise, though its terseness contributes to gaps in usage and behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool taking a nested fields object, no output schema, and many sibling update tools, the description is minimally adequate. It covers the core action and feature-flag prerequisite but leaves out partial-update semantics and usage distinctions that an agent would need to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% at the top level: sys_id is documented and fields is described as 'Key-value pairs to update'. The description adds no field-level semantics beyond that, which matters because the nested fields object lists many field names with no descriptions or types. This is the baseline case where the schema carries most parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: update fields on a change request. It is clear enough to distinguish from create_change_request or get_change_request, but it does not explicitly differentiate from sibling update tools or explain scope beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the prerequisite '(requires WRITE_ENABLED=true)', which is useful operational context but not a when-to-use rule. It does not say when to use this instead of natural_language_update, update_request_item, or other update tools, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_client_scriptBIdempotent
Update an existing client script (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: name, table, type, script, field_name, active, global | |
| sys_id | Yes | Client script sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare mutation (readOnlyHint=false), idempotency, non-destructiveness, and open-world scope, so the description's main added value is the SCRIPTING_ENABLED=true gate. It omits whether the script executes immediately on save, how partial updates behave for fields not supplied, and permission requirements beyond the flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single parenthetical clause; nothing is wasted and the prerequisite is placed inline rather than buried. It is arguably too terse for what it leaves out, but the structure itself is tight and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema coverage and rich annotations and no output schema, the minimal gaps are tolerable, but an agent still lacks any indication of environment requirements beyond the flag, side effects of updating a live script, or how partial field objects are merged.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including an explicit allowed-field list for the nested 'fields' object and a description for sys_id, so the schema carries the parameter burden. The description adds no format or semantic detail beyond it, which meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing client script'), which distinguishes it clearly from get_client_script and create_client_script by name alone. It does not explicitly contrast with the many other update_* siblings, but the resource noun is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is a prerequisite flag ('requires SCRIPTING_ENABLED=true'); it never says when to use this versus create_client_script, get_client_script, or update_script_include, nor what happens if the flag is false. No exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_compliance_controlAIdempotent
Update a Compliance Control by sys_id. NOTE: state is not in the allowed field set — confirmed live that REST writes to it are silently ignored (HTTP 200 but the value never persists); only the "Attest" button in the ServiceNow UI can actually move a Control into the attest state and trigger assessment generation. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: name, description, category, classification, key_control, frequency, assessment_method, enforcement, owner, owning_group, profile, supplemental_guidance, discussion, implementation_statement | |
| sys_id | Yes | 32-char sys_id of the Control |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond annotations: it warns that state writes are silently ignored (HTTP 200 but never persist), that only the UI Attest button can move a Control into attest, and that the tool requires WRITE_ENABLED=true. These are high-value operational constraints not available in the annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by a critical caveat and the write-gate requirement. Every sentence adds actionable information, and the bold warning appropriately emphasizes the WRITE_ENABLED prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an update tool with full schema coverage and annotations, the description provides the necessary behavioral context: scope, sys_id targeting, a critical state-field limitation, and the WRITE_ENABLED requirement. No output schema exists, so return-value detail is not required, and the definition is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the allowed fields are already documented in the schema. The description adds meaningful semantic guidance by calling out that state is not in the allowed field set and cannot be updated via REST, which clarifies a likely user assumption beyond the schema listing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Update a Compliance Control by sys_id.' It is immediately clear what the tool does and which object type it operates on, distinguishing it from sibling tools like create_compliance_control, get_compliance_control, and update_compliance_policy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies updating an existing control identified by sys_id and explicitly warns that the state field cannot be updated through this tool. It does not route the agent to alternatives for fetching a sys_id or creating a control, but the usage context is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_compliance_policyBIdempotent
Update a Compliance Policy by sys_id. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: name, description, state, policy_category, category, classification, owner, owning_group, kb_knowledge_base, approval_method, article_template, audience, valid_from, valid_to | |
| sys_id | Yes | 32-char sys_id of the Policy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds a genuinely useful operational gate (WRITE_ENABLED=true) that annotations do not express. However it never says whether this is a partial/merge update or a replace, nor what happens to the numerous fields not supplied — the most important behavioral question for a 14-field update tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action first and the gate second; every element carries information and nothing is padded. Slightly clipped for a mutation tool, but structurally sound.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter, fully described schema with no output schema, the description is close to sufficient. The remaining gap is mutation semantics: merge vs replace and error/return behavior are left entirely implicit, and the WRITE_ENABLED flag is mentioned without saying what failure looks like when it is off.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the nested fields object already enumerates the 14 allowed properties with additionalProperties=false. The description contributes only 'by sys_id', which merely restates the required key. Baseline 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (Compliance Policy) plus the identifying key (sys_id), which clearly separates it from create_compliance_policy, list_compliance_policies and get_compliance_policy. It stops short of explicitly naming those siblings, so differentiation comes from the verb rather than from prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage-relevant content is the WRITE_ENABLED notice. There is no statement of when to choose update over create or get, no prerequisites about policy state, and no exclusion for retired policies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_csm_caseAIdempotent
Update fields on an existing CSM case (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Key-value pairs of fields to update | |
| sys_id | Yes | System ID of the CSM case |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare that this is a non-read-only, non-destructive, idempotent, open-world operation. The description adds a valuable environmental prerequisite that annotations do not cover: WRITE_ENABLED=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted wording. It conveys the action, target, and prerequisite immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an update tool whose schema enumerates the updatable fields and whose annotations cover safety and idempotency, the description is largely sufficient. It does not spell out partial-update behavior or sibling routing, but those are minor gaps against the structured context already provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high, so the schema already documents the two parameters and their top-level meanings. The description adds no extra syntax, partial-update semantics, or field-level meaning beyond 'fields on an existing CSM case'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: update fields on an existing CSM case. The word 'existing' helps distinguish it from create_csm_case, but it does not explicitly differentiate it from close_csm_case or other update_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an implied usage condition (the case must already exist) and a useful prerequisite (WRITE_ENABLED=true). However, it does not say when to choose update_csm_case over close_csm_case or other update tools, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dashboardBIdempotent
Update an existing PA dashboard (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Fields to update (name, description, roles, active, etc.) | |
| sys_id | Yes | Dashboard sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds a genuinely useful operational prerequisite (WRITE_ENABLED=true). However it says nothing about partial-update semantics — e.g. whether omitted fields in the `fields` object are cleared or left untouched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though the parenthetical prerequisite could be slightly more explicit about how to satisfy it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with full schema coverage and annotations covering safety, the definition is minimally adequate. The gaps — partial vs full update behavior, and what a successful update returns — are not covered by an output schema, so the description could carry more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: sys_id is documented as 'Dashboard sys_id' and `fields` is documented as the field bag (name, description, roles, active). The description adds no syntax or behavioral detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Update an existing PA dashboard'. That is clearly distinct from the sibling read tools (get_pa_dashboard, list_pa_dashboards) and from create_dashboard, though it doesn't explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'An existing' implies the dashboard must already exist and the WRITE_ENABLED note signals a prerequisite, but there is no explicit when-to-use/when-not guidance or mention of create_dashboard for the non-existing case. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_epicAIdempotent
Update an epic (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: short_description, description, product, theme, parent_epic | |
| sys_id | Yes | System ID of the epic |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds a useful WRITE_ENABLED prerequisite, but does not explain partial-update behavior, field handling, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with the action first and the prerequisite in parentheses. It contains no filler and is appropriately compact given the schema supplies field details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With rich annotations and a fully described schema, the description covers the core action and WRITE_ENABLED prerequisite. It still omits partial-update semantics and any error or return expectations, though no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: sys_id is documented as 'System ID of the epic' and fields lists allowed properties. The description adds no parameter meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Update an epic'. The verb distinguishes it from create_epic and list_epics, though it does not explicitly name or differentiate siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides the operational prerequisite 'requires WRITE_ENABLED=true' and implies use for modifying existing epics, but gives no explicit when-to-use guidance versus create_epic, update_story, or other update tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_grc_entityBIdempotent
Update a GRC Entity by sys_id. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: name, description, profile_class, owned_by, cmdb_ci, framework, functional_domain | |
| sys_id | Yes | 32-char sys_id of the Entity |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds a genuinely useful gate (requires WRITE_ENABLED=true), but says nothing about partial-update semantics, permission failures, or what happens to unspecified fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, front-loaded with the action and lookup key, with the write gate flagged. Nothing is wasteful; it is terse but not under-specified for the schema it sits on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-object mutation tool, the essential call information (key, allowed fields, write gate) is present via schema and description. Missing is what the update returns and how partial field updates are applied to omitted properties, which matters since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: sys_id is documented as a 32-char ID and the fields object enumerates all seven allowed keys with additionalProperties=false. The description's "by sys_id" merely restates the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Update") and resource ("GRC Entity") plus the lookup key (sys_id), which lets an agent distinguish it from sibling mutators like update_grc_issue or update_grc_indicator. It stops short of explicitly contrasting those siblings, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or named alternatives are given beyond the implicit "update rather than create/list". The WRITE_ENABLED note is a gate, not a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_grc_indicatorAIdempotent
Update a GRC Indicator by sys_id. entity/item are intentionally not updatable here — changing either risks the same entity/item validation failure confirmed on create; recreate the Indicator instead if it needs to measure a different Control/Risk or Entity. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: short_description, category, collection_frequency, active, owner, owning_group, instructions | |
| sys_id | Yes | 32-char sys_id of the Indicator |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=true, so the safety profile is covered structurally; the description adds a genuine operational precondition (WRITE_ENABLED=true) and explains a real failure mode behind the excluded fields. It stops short of describing partial-update semantics or what a failed update returns, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and identifier, then the constraints; no filler sentences. The second sentence is long and parenthetical-ish, but each clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with rich annotations and a fully documented schema, the description supplies the write gate, the excluded-field rationale, and the escape hatch. Only success/failure behavior and partial-update semantics are left implicit, which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the fields object already lists every allowed field, so the baseline is 3. The description goes beyond it by explaining why entity/item are absent from the allowed set, which preempts an agent attempting an unsupported mutation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+identifier ("Update a GRC Indicator by sys_id"), which cleanly places it against create_grc_indicator, get_grc_indicator and list_grc_indicators. It also enumerates what is deliberately out of scope, so the agent knows exactly what this tool operates on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when NOT to use it (changing entity/item) and gives the concrete alternative — recreate the Indicator — along with the reason (reproducing the create-time validation failure). That is a when/when-not/alternative triad in two sentences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_grc_issueBIdempotent
Update a GRC Issue by sys_id. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: short_description, description, state, profile, issue_type, issue_source, classification, impact, urgency, assignment_group, assigned_to, due_date, action_plan, recommendation, close_notes | |
| sys_id | Yes | 32-char sys_id of the Issue |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, destructive=false and openWorld=true, so the safety profile is covered. The description adds the WRITE_ENABLED gating flag, which is valuable operational context, but says nothing about partial vs full update semantics, validation failures, or field-level side effects. It is consistent with the annotations (no contradiction), just thin beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, front-loaded with the action and key, with the write-flag warning immediately visible. It is efficient, though the total absence of any body means brevity is partly under-specification rather than pure economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-object mutation with no output schema and no per-field descriptions, the definition is only minimally sufficient: an agent knows the identity key and the allow-list, but not the response shape, whether unspecified fields are cleared, or how validation errors surface. Annotations cover safety, so the remaining gap is moderate rather than severe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nested `fields` object enumerates all 15 allowed attributes with additionalProperties=false, so the schema already does the heavy lifting. The description only contributes the meaning of sys_id as the record identifier, which is the schema baseline, not added semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Update a GRC Issue") and names the lookup key (sys_id), which cleanly separates it from list_grc_issues / get_grc_issue / create_grc_issue. It stops short of explicitly naming those siblings as alternatives, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The "requires WRITE_ENABLED=true" note is a real precondition an agent must check before calling, and "by sys_id" implies a record must already exist. However, there is no guidance on when to prefer this over create_grc_issue, no mention of fetching with get_grc_issue first, and no statement about 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.
update_groupAIdempotent
Update a group (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: name, description, manager | |
| sys_id | Yes | System ID of the group |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose that this is a non-read-only, open-world, idempotent, non-destructive mutation. The description adds the important environment gate "requires WRITE_ENABLED=true," but it does not explain partial-update behavior, error conditions, or permission details beyond that gate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted text. It puts the core action first and follows with the key gating condition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema and annotations carry most of the needed detail for a simple two-parameter mutation, and no output schema is expected. Still, the description omits update semantics such as whether omitted fields are preserved and how invalid fields are handled, leaving a meaningful gap for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the nested fields schema already documents the allowed update fields (name, description, manager). The description adds no parameter-specific meaning beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Update a group." This clearly distinguishes it from read-oriented siblings like get_group and list_groups, but it does not explicitly differentiate it from other group mutations such as add_user_to_group or remove_user_from_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes the prerequisite "requires WRITE_ENABLED=true," which is useful usage context. However, it does not say when to choose this tool over alternatives like get_group, create_group, or group-membership tools, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_hr_caseBIdempotent
Update fields on an existing HR case (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Key-value pairs to update | |
| sys_id | Yes | System ID of the HR case |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation as non-read-only, idempotent, non-destructive, and open-world. The description adds a useful operational prerequisite, WRITE_ENABLED=true, but does not explain partial-update behavior, whether unspecified fields are preserved, or what happens on invalid field keys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted wording. The prerequisite is included efficiently, though the definition is sparse for a mutation tool with a nested fields object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations cover safety traits and the schema covers parameters, so the description need not explain everything. Still, for an update tool with nested updatable fields and no output schema, it should clarify partial-update semantics and expected response behavior more fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so sys_id and the fields object are documented in the schema. The description adds little beyond the schema: it does not mention the whitelist of updatable fields or clarify how key-value pairs are applied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: update fields on an existing HR case. 'Existing' implicitly distinguishes it from create_hr_case, but it does not explicitly differentiate from close_hr_case, update_hr_profile, or other update siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one important usage condition, WRITE_ENABLED=true, and implies use when modifying fields on a case. However, it does not say when to prefer close_hr_case, natural_language_update, or other update tools, and offers no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_hr_profileAIdempotent
Update HR profile fields for a user (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | HR profile fields to update: department, manager, location, job_title | |
| user_sys_id | Yes | sys_id of the user whose profile to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is largely covered. The description adds a genuinely useful operational prerequisite, WRITE_ENABLED=true, beyond the annotations. It does not describe partial-update semantics or failure behavior, but the annotation coverage lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no filler. Both the action and the key WRITE_ENABLED prerequisite are stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool, the definition covers the core action and an important execution prerequisite, and the schema fully documents parameters. It still omits how unspecified fields are treated, whether this is a partial merge, and how it differs from update_user, leaving some gaps an agent may need to resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including a nested fields object describing department, manager, location, and job_title. The description itself adds no parameter syntax or format details beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Update HR profile fields for a user." It is clear what the tool does, but it does not distinguish this HR-profile-specific update from siblings like update_user or get_hr_profile, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical prerequisite "requires WRITE_ENABLED=true" gives important context for when the tool can be used. However, there is no guidance on when to choose this tool over update_user or when to use get_hr_profile first, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_incidentAIdempotent
Update fields on an existing incident (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Key-value pairs to update (e.g., {"state": "2", "urgency": "1"}) | |
| sys_id | Yes | System ID of the incident |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds an important operational prerequisite ('requires WRITE_ENABLED=true') beyond the annotations. It does not explain partial-update behavior, whether unspecified fields remain untouched, or what happens to fields not included in the update map.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. The permission prerequisite is included compactly in parentheses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-field update tool with no output schema, the description is minimally adequate. It omits update semantics, field expectations, and routing guidance among incident-related siblings, leaving meaningful gaps for an agent invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents sys_id and the fields object with an example. The description adds no parameter-specific meaning beyond the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Update fields on an existing incident'. It clearly distinguishes modification of an existing incident from creation or resolution, but does not differentiate itself from the many other update_* siblings or incident lifecycle tools such as resolve_incident and close_incident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Update fields on an existing incident', and the WRITE_ENABLED prerequisite gives useful context. However, there is no explicit guidance on when to use this instead of siblings like resolve_incident, close_incident, add_work_note, or update_security_incident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_knowledge_articleBIdempotent
Update a knowledge article (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Key-value pairs to update (e.g., {"text": "...updated content..."}) | |
| sys_id | Yes | System ID of the article |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true. The description adds the WRITE_ENABLED prerequisite, which is genuine extra context beyond the annotations, but it says nothing about partial-update semantics, what happens to omitted fields, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the precondition is placed immediately after the action. It is efficient, though so terse that it leans toward under-specification rather than true completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested fields object and no output schema, the description covers the essential precondition but omits update semantics — whether the update is a partial merge, whether the article must already exist, and whether it must be in draft state. An agent could call it correctly but not confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the two parameters (sys_id, fields) is documented in the schema, including the nested fields object. The description adds no meaning about the fields map or whether unspecified properties are preserved, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update) and resource (knowledge article) with the clear implication of modifying an existing article by sys_id. Sibling tools create_knowledge_article, get_knowledge_article, publish_knowledge_article and retire_knowledge_article are distinguishable by verb alone, though the description never names them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(requires WRITE_ENABLED=true)' is a real usage gate, so the agent knows an environment precondition. But there is no guidance on when to use this versus publish_knowledge_article or retire_knowledge_article, which are the closest ambiguous siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_notificationAIdempotent
Update an existing email notification (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Fields to update: name, subject, message_html, active, condition, etc. | |
| sys_id | Yes | Notification sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is not read-only, is idempotent, is open-world, and is non-destructive. The description adds the useful WRITE_ENABLED=true prerequisite but does not explain partial-update semantics, what happens to omitted fields, or effects on active notifications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted wording. It immediately conveys the action, target, and key prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a fully described two-parameter schema and annotations covering safety and idempotency, the description supplies the main missing operational prerequisite, WRITE_ENABLED=true. It could be richer about partial update behavior, but the structured fields already carry most invocation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents sys_id as the notification sys_id and fields as the updatable fields. The description adds no parameter-specific detail beyond the schema, which is appropriate for the baseline when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: update an existing email notification. It is clearly distinct from create_notification, list_notifications, and get_notification by the update action, though it does not explicitly contrast with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the operation is for an existing email notification and gives a prerequisite, WRITE_ENABLED=true. However, it does not explicitly say when to use this rather than create_notification, schedule_notification, or send_emergency_broadcast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_portal_widgetAIdempotent
Update an existing Service Portal widget's source code (requires WRITE_ENABLED=true and SCRIPTING_ENABLED=true, including metadata-only updates)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: name, id, template, css, client_script, script, server_script, option_schema, demo_data | |
| sys_id | Yes | Widget sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false). The description adds genuinely new operational context not in annotations: that the environment must have WRITE_ENABLED and SCRIPTING_ENABLED set, and that metadata-only updates still require them. What it omits is consequences of overwriting existing script/code.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The trailing parenthetical is slightly dense but earns its place by resolving the coding-vs-metadata ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool, annotations cover the safety profile, the schema fully documents both parameters including nested allowed fields, and there is no output schema to explain. The description adds the environment prerequisites, which is the one thing an agent could not infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the nested 'fields' object enumerates all allowed fields with additionalProperties=false, so the schema already carries parameter meaning. The description adds nothing parameter-specific beyond 'source code,' so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Update an existing Service Portal widget's source code.' The parenthetical clarifies it also covers metadata-only updates, which prevents a narrow reading. It does not name sibling tools (create_portal_widget, get_portal_widget), so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite flags (WRITE_ENABLED=true, SCRIPTING_ENABLED=true) tell the agent when the call can succeed, which is useful usage context. However, there is no explicit guidance on when to choose this over create_portal_widget or get_portal_widget, and no statement about failure behavior when flags are off.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_problemBIdempotent
Update fields on an existing problem (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Key-value pairs to update | |
| sys_id | Yes | System ID of the problem |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnly=false, idempotent=true and destructive=false, so the safety profile is covered. The description adds one genuinely useful non-schema fact — the WRITE_ENABLED=true setting requirement — but says nothing about partial-update semantics (are unspecified fields left intact?), validation failures, or permission errors, which matter for a 21-field mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and resource, and the parenthetical prerequisite is placed where it will be read. Nothing is wasted, though the terseness leaves gaps rather than filling them.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested 21-property fields object and no output schema, the description is thin: it does not say whether the update is partial or full, what a successful response contains, or how it relates to resolve_problem for state transitions. Only the WRITE_ENABLED gate is communicated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with sys_id described as 'System ID of the problem' and fields described as 'Key-value pairs to update', so baseline 3 applies. The description adds nothing about accepted field values (e.g. valid state/priority values, whether comments vs work_notes differ), which is the main ambiguity a caller faces.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (update fields on an existing problem), which distinguishes it from create_problem and get_problem by implication. It does not, however, explicitly differentiate itself from resolve_problem, which could also mutate a problem's state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only the precondition WRITE_ENABLED=true is given; there is no guidance on when to choose this over resolve_problem, update_task, or natural_language_update, nor any 'when not to use' note. The agent has to infer that this is the generic field-mutation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_remediation_taskAIdempotent
Update a Remediation Task by sys_id (state, assignee, group, target date, etc.). [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | State filter. Single value or comma-separated list. 1=Open, 2=Under Investigation, 10=Awaiting Implementation, 11=In Review, 12=Deferred, 101=Resolved, 3=Closed | |
| sys_id | Yes | 32-char sys_id of the Remediation Task | |
| assigned_to | No | Assignee sys_id | |
| ttr_target_date | No | Target remediation date (YYYY-MM-DD HH:MM:SS) | |
| assignment_group | No | Assignment group sys_id | |
| short_description | No | Updated short description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds a genuinely useful operational prerequisite beyond annotations: the WRITE_ENABLED=true gate, which an agent must satisfy before calling. It does not discuss side effects or response behavior, but the added write gate is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with zero waste; the resource and lookup key are front-loaded, followed by the operational gate. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with annotations, a fully documented six-parameter schema, and no output schema, the definition covers the essential call requirements and highlights the write gate. It could mention confirming the target record or the response shape, but it is substantially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented, including state enums, sys_id format, and date format. The description only names a subset of fields (state, assignee, group, target date, etc.) and adds no syntax or semantic detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: update a Remediation Task by sys_id, and lists representative mutable fields. It is clearly distinguishable from siblings like update_task or update_problem by naming the exact resource, though it does not explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage through 'by sys_id', but there is no guidance on when to use this versus update_task or update_vulnerability, and no prerequisite such as using list_remediation_tasks to obtain the sys_id. The only condition given is the write gate, which is not a usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_reportBIdempotent
Update an existing saved report definition (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: title, table, type, field, filter_fields, query, aggregate, group_by, roles | |
| sys_id | Yes | Report sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the description's added value is mainly the WRITE_ENABLED=true gate, which is useful. It does not say whether the 'fields' object is a partial patch or a full replacement of the report definition, which is the key behavioral question for this mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the prerequisite is placed where it is immediately visible. It is arguably too terse for a nested-object mutation, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter update tool with full schema coverage plus annotations, only the merge/replace semantics and the effect on omitted fields are left unstated. That gap matters for a report definition update but is bounded; no output schema exists, so no return-value explanation is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nested 'fields' property already enumerates the allowed keys, so the description need not repeat them. It adds no semantic detail (e.g. whether omitted fields are preserved, what 'query' format is accepted) beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing saved report definition'), which cleanly separates it from create_report, get_report, list_reports and update_dashboard without naming them. The scope word 'existing' rules out creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(requires WRITE_ENABLED=true)' gives a real precondition for use, but the description never names an alternative (e.g. create_report vs update_report vs natural_language_update) or says when not to use it. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_request_itemAIdempotent
Update a requested item — stage, assignment, or work notes (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| stage | No | New stage: request, approval, fulfillment, delivery, closed | |
| state | No | New state. 1=Open, 2=Work In Progress, 3=Closed Complete, 4=Closed Incomplete | |
| sys_id | Yes | sc_req_item sys_id | |
| work_notes | No | Work note to append | |
| assigned_to | No | sys_id of the user to assign to | |
| assignment_group | No | sys_id of the assignment group |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the behavioral context that the operation requires WRITE_ENABLED=true, which is not provided by the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=true). It does not contradict annotations. It could mention more about side effects or return behavior, but the permission requirement is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with a parenthetical prerequisite. It is front-loaded and every word contributes. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and annotations present, the description provides the permission requirement but lacks information about return values or success/failure behavior. It is adequate but could be more complete by describing what the tool returns or any side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters. The description adds minimal extra meaning beyond listing some editable fields (stage, assignment, work notes). It does not provide additional syntactic or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Update' and the resource 'requested item', and specifies the fields that can be updated (stage, assignment, work notes). It also notes a prerequisite (WRITE_ENABLED=true). This is specific and distinguishes it from siblings like create_request_item or get_request_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the prerequisite WRITE_ENABLED=true, which gives context on when the tool can be used. However, it does not explicitly state when to use this tool versus alternatives (e.g., update_incident, update_task) 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.
update_riskAIdempotent
Update a Risk by sys_id. NOTE: impact/likelihood/score are not in the allowed field set — confirmed live that they are unconditionally recalculated by a business rule on write. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: statement, profile, category, owning_group, apply_reason | |
| sys_id | Yes | 32-char sys_id of the Risk |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds important behavior beyond the annotations: impact, likelihood, and score are rejected and recalculated by a business rule on write, and writes require WRITE_ENABLED=true. These are exactly the non-obvious side effects and gating requirements an agent needs before calling 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded and compact: one sentence identifies the operation, and the following NOTE captures the critical field and write-gate caveats without any filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with complete schema coverage and annotations covering safety/idempotency, the description supplies the missing operational caveats: unsupported fields, business-rule recalculation, and the write enablement requirement. Nothing essential is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the two parameters and allowed fields. The description adds meaningful parameter guidance by warning that impact, likelihood, and score are not accepted, even though common risk updates might otherwise attempt them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: update a Risk by sys_id. It clearly distinguishes this tool from get_risk, create_risk, and list_risks, and it immediately clarifies which fields cannot be updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear contextual guidance by stating the tool updates an existing Risk identified by sys_id and requires WRITE_ENABLED=true. It does not explicitly name alternatives or when-not-to-use conditions, but the mutation context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_scheduled_jobBIdempotent
Update a scheduled job (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: name, script, run_type, run_time, run_period, active | |
| sys_id | Yes | Scheduled job sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral fact beyond annotations — the WRITE_ENABLED=true gate — but says nothing about partial-vs-full field replacement, validation behavior, or what a successful update returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the operation front-loaded and the prerequisite appended in parentheses — no wasted words. It is terse to the point of omitting useful detail, but nothing present is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested-object parameter and no output schema, the definition is minimally adequate: annotations cover safety, the schema covers parameters, and the description covers the write-enable prerequisite. It leaves open how the update merges with existing job settings and what failure conditions look like, which an agent would want before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: sys_id is documented and the nested fields object enumerates allowed keys with additionalProperties=false. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Update a scheduled job"), which is unambiguous about the operation being performed. It stops short of differentiating from siblings like trigger_scheduled_job, create_scheduled_job, or get_scheduled_job, but the verb+resource pairing is clear enough that an agent can identify the tool's role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this modifies an existing job, unlike create_scheduled_job or trigger_scheduled_job. The WRITE_ENABLED=true note is a prerequisite, not a when-to-use rule, and no alternative tool is named or excluded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_scoped_appBIdempotent
Update an existing scoped application (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: name, version, short_description, description, vendor, active, logo | |
| sys_id | Yes | App sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds the important WRITE_ENABLED environmental prerequisite, but it does not clarify partial-update semantics, what happens to omitted fields, or the response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted text. It is concise, but its structure is minimal and could benefit from clearer separation between the action and the prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with full schema coverage and annotations, the description provides the key WRITE_ENABLED guard. It nevertheless omits important update behavior, such as whether the fields object performs a partial update or replacement and what the returned result looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema documents the allowed fields object and sys_id. The description adds no parameter-specific meaning beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Update an existing scoped application.' The word 'existing' implies modification rather than creation, but the description does not explicitly differentiate this tool from siblings like create_scoped_app, get_scoped_app, or list_scoped_apps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a useful prerequisite, 'requires WRITE_ENABLED=true,' and implies use when modifying an existing scoped app. However, it does not explicitly state when to use this tool versus create_scoped_app, get_scoped_app, or other update tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_script_includeAIdempotent
Update a script include (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: name, script, api_name, access, active | |
| sys_id | Yes | System ID of the script include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, establishing the mutation profile. The description adds the SCRIPTING_ENABLED feature-flag prerequisite, which is real context beyond annotations, but does not describe side effects, permission scope, or what the result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the action, the resource, and the prerequisite. Nothing to trim and no ambiguity introduced.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter partial-update tool with a fully documented nested fields object and no output schema, the description plus schema cover what an agent needs to call it. Only return/side-effect behavior is left implicit, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: sys_id is documented and the fields object enumerates allowed keys (name, script, api_name, access, active) with additionalProperties=false. The description adds nothing about parameters, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a script include'), so the agent knows exactly what object is modified. It does not differentiate from siblings like create_script_include, get_script_include, or update_client_script, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'requires SCRIPTING_ENABLED=true' parenthetical is a genuine precondition for invocation, which is useful implied usage guidance. However there is no explicit when-to-use vs. alternatives or exclusion criteria among the many sibling update_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_scrum_taskBIdempotent
Update a scrum task (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: short_description, story, assigned_to | |
| sys_id | Yes | System ID of the scrum task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the bar is lower. The description adds genuinely useful gating context by stating WRITE_ENABLED must be true, but says nothing about the effect of omitting fields in the nested update object, whether unspecified fields are cleared, or permission failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short clause with the prerequisite front-loaded in parentheses and zero redundant words. It is arguably too terse, but no sentence is wasted and nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested partial-update object and no output schema, the description leaves key questions unanswered: what is returned, how partial field sets are interpreted, and what errors occur when WRITE_ENABLED is false. The WRITE_ENABLED hint is helpful but not sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: sys_id is documented and the nested fields object enumerates the allowed keys (short_description, story, assigned_to). The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ("Update a scrum task"), so an agent knows exactly what is mutated. It does not distinguish itself from siblings like create_scrum_task, list_scrum_tasks, or the broader update_task, which would require inferring the difference from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the enabling prerequisite (WRITE_ENABLED=true); there is no statement of when to choose this over update_task, update_story, or create_scrum_task. Exclusions and task-type selection criteria are entirely absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_security_incidentBIdempotent
Update a security incident record (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Fields to update (state, severity, containment_status, etc.) | |
| sys_id | Yes | System ID of the security incident |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds a useful write-enabled precondition, but does not explain side effects, whether unspecified fields remain unchanged, or what the operation returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is terse but well structured; the only weakness is that it omits useful context rather than being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with nested fields and no output schema. Annotations cover the safety profile and the schema covers field names, but the description is still minimal: it does not clarify expected outcomes, update semantics, or differentiation from related update tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in the schema, including the allowed nested fields. The description adds no parameter syntax, formatting, or required-value guidance beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: update a security incident record. It does not distinguish this from sibling update tools such as update_incident or update_grc_issue, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies one operational prerequisite, WRITE_ENABLED=true, but gives no guidance on when to use this tool versus update_incident or other update tools. It does not name alternatives or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_storyBIdempotent
Update an agile story (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: short_description, story_points, sprint, epic, description, assigned_to | |
| sys_id | Yes | System ID of the story |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, idempotent, non-destructive mutation. The description adds the useful WRITE_ENABLED=true operational prerequisite, but it does not clarify partial-update behavior, field-level effects, or what happens to omitted fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted text. The parenthetical precondition is concise and directly relevant to invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema coverage and annotations, the definition contains enough structured information to invoke the tool. However, the description itself does not clarify update semantics such as partial versus full replacement or behavior for omitted fields, leaving a meaningful behavioral gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the nested fields object explicitly lists allowed fields, so parameter meaning is handled by the schema. The description adds no parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: update an agile story. It is clearly distinct from create_story and list_stories, but it does not explicitly differentiate from update_scrum_task or explain update scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is the WRITE_ENABLED=true prerequisite. It does not explain when to use this instead of create_story, update_scrum_task, or other story-related tools, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskBIdempotent
Update fields on a task record (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: short_description, description, state, priority, assigned_to, assignment_group, work_notes, comments, close_notes, due_date, active | |
| sys_id | Yes | System ID of the task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is largely covered. The description adds one genuinely useful piece of context not in annotations — the WRITE_ENABLED=true prerequisite — but says nothing about partial updates, validation failures, or how existing fields not listed are treated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the core action front-loaded and the prerequisite in parentheses. It is tight but borders on under-specified for a mutation tool with a nested payload.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Not a 5? Reconsider: with full schema coverage, rich annotations, and the WRITE_ENABLED gate disclosed, the description supplies everything an agent needs to invoke it correctly. Return values are not needed since no output schema exists, and the remaining gap (task-type differentiation) is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the nested 'fields' object enumerates all eleven allowed keys and sys_id is documented. The description adds no syntax, formatting, or value guidance beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update fields on a task record'), so an agent knows exactly what the tool mutates. However, it does not differentiate from sibling mutation tools such as update_scrum_task, complete_task, or update_problem, leaving the task-vs-scrum-task boundary implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no mention of alternatives like complete_task or update_scrum_task. The only contextual hint is the WRITE_ENABLED prerequisite, which is an operational gate rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ui_actionBIdempotent
Update an existing UI Action (requires SCRIPTING_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: name, table, action_name, script, condition, action_type, active, form_button, list_button | |
| sys_id | Yes | UI Action sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, idempotent, non-destructive, open-world operation, so the safety profile is covered. The description adds the SCRIPTING_ENABLED=true gate, which is genuinely beyond the annotations. It says nothing about whether the update is a partial merge or a full replacement, or what happens to fields omitted from the object.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the prerequisite folded in as a parenthetical, front-loaded with the action. Nothing is wasted, though the parenthetical is terse enough to be slightly cryptic about how the flag is supplied.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations and a fully documented nested schema carry most of the burden, and no output schema exists so return values need not be explained. What is missing is the update semantics for the nested fields object and any indication of required permissions beyond the scripting flag.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: sys_id is described as the UI Action sys_id and the fields object enumerates all nine allowed keys. The description adds no additional meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing UI Action'), which cleanly separates it from the sibling create_ui_action, get_ui_action and list_ui_actions that appear in the tool list. It stops short of naming those siblings explicitly, so differentiation relies on the agent reading the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical 'requires SCRIPTING_ENABLED=true' is a real usage prerequisite and is the most useful part of the definition. However, there is no statement about when to choose this over create_ui_action, no note on whether the target action must already exist, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_uib_componentCIdempotent
Update a UI Builder component. [Scripting]
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| sys_id | Yes | Component sys_id | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) with idempotent behavior. However, the description adds no extra behavioral detail such as whether updates are partial or full replacement, any permissions needed, or side effects. The safety profile is covered by annotations, but behavioral context beyond that is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and to the point, but the '[Scripting]' tag is unclear and adds noise without meaningful value. It is not overly verbose, but it under-specifies rather than being appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description is severely incomplete. It does not explain return behavior, error handling, or whether the update is partial or full. Given the tool's simplicity, a few extra sentences about updatable fields and expected outcomes would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only sys_id is described), and the tool description does not mention any parameters or fields. The description fails to compensate for low schema coverage, leaving the agent without any guidance on what 'label' or 'description' mean in the update context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and the resource ('UI Builder component'), distinguishing it from sibling tools like create_uib_component and list_uib_components. It is specific enough to convey the core purpose, though it does not enumerate which fields or attributes can be updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no context on when to use this tool versus alternatives, no prerequisites, and no notes on scenarios where it is appropriate. The '[Scripting]' tag is ambiguous and does not clarify usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_uib_pageCIdempotent
Update an existing UI Builder page. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| title | No | ||
| layout | No | ||
| sys_id | Yes | UIB page sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and idempotentHint=true, and the description adds only '[Write]' which duplicates the annotation. It does not disclose additional behavioral details like required permissions, validation behavior, or side effects beyond what annotations already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary action, but it is overly sparse. While efficient, it omits valuable context that could be included without significant length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an update operation with four parameters and no output schema, the description provides minimal context. It does not mention return values, error conditions, or the significance of the sys_id requirement, leaving the agent to infer critical usage details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only sys_id is described). The description does not compensate by explaining path, title, or layout semantics. It adds no meaningful parameter information beyond the bare field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update an existing UI Builder page', using a specific verb and resource. It distinguishes the tool from siblings like create_uib_page, delete_uib_page, and get_uib_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as update_uib_component or create_uib_page. The description only states what it does, with no contextual usage cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_usem_ruleAIdempotent
Update a USEM/VR automation rule by sys_id with a fields object restricted to that table allowlist. Every field is read back after the write; a value ServiceNow did not store fails with FIELDS_NOT_SAVED. Setting remediation_task assignment_group_fields runs a run-once server script and requires SCRIPTING_ENABLED=true. [Write — requires WRITE_ENABLED=true; admin-level config change]
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Column/value map for the rule record. Schema allows the union of all USEM rule fields; runtime also restricts fields to the selected rule_type. | |
| sys_id | Yes | 32-char sys_id of the rule | |
| rule_type | Yes | Which rule family to operate on: assignment (sn_sec_wf_assign_rule), remediation_task, remediation_target (TTR/SLA targets), risk_calculator + calculator_rule + risk_field + risk_score_weight + calculator_config (risk scoring), classification + classification_rule, exception_rule + exception_config, rollup (score rollup), approval, auto_close, exclusion | |
| wait_seconds | No | Only used for script-written fields (assignment_group_fields): how long to wait for the run-once job (0-120, default 60). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: every field is read back after the write, unpersisted values fail with FIELDS_NOT_SAVED, assignment_group_fields triggers a run-once server script with a wait_seconds bound, and the operation is flagged as an admin-level config change needing WRITE_ENABLED. All of this is consistent with readOnlyHint=false and idempotentHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but every sentence carries information: scope, verification behavior, error code, the scripting side effect, and the write gate. The write-gate warning sits at the end in brackets rather than being front-loaded, which slightly weakens scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter write tool with no output schema and a nested free-form fields object, this covers verification, failure mode, side effects, and prerequisites. Remaining gaps are behavioral detail (partial update semantics, what happens on rule_type/field mismatch), which are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real value: the fields object is the union of all USEM rule columns and is further restricted at runtime by the selected rule_type. It doesn't clarify replace-vs-merge semantics for partial fields objects, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (USEM/VR automation rule) plus the keying mechanism (by sys_id) and payload shape (fields object restricted to a per-table allowlist). It is clearly distinguishable from siblings like create_usem_rule, get_usem_rule, set_usem_rule_active, and the other update_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context on prerequisites (WRITE_ENABLED=true, SCRIPTING_ENABLED=true for script-written fields) and on which fields the runtime accepts. It doesn't explicitly name alternatives (e.g., use set_usem_rule_active to toggle active, create_usem_rule for new rules), so routing guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_userBIdempotent
Update a user account (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: user_name, email, first_name, last_name, title, department | |
| sys_id | Yes | System ID of the user |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, and destructive=false, so safety is covered. The description adds the WRITE_ENABLED=true environment requirement, which is real context beyond annotations, but it never says whether the update is partial or a full replacement of the allowed field set — a critical ambiguity for a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the prerequisite front-loaded and no filler. It is efficient, though its brevity is partly under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and a nested fields object, the description leaves key questions unanswered: whether omitted fields are preserved or cleared, whether unknown sys_ids error out, and what the response contains. Annotations and schema cover the basics but not the update semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: sys_id is documented and the fields object enumerates the six allowed fields with additionalProperties=false. The description adds nothing about parameter semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Update a user account'. That's clearly distinct from siblings like create_user, get_user, and list_users, though the description never actually names them or says what a user account contains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the WRITE_ENABLED=true prerequisite, which is a gating condition rather than guidance. There's no statement of when to use this versus create_user or the generic natural_language_update, nor any note on when not to update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_va_topicCIdempotent
Update a Virtual Agent topic properties. [Write]
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Allowed fields: name, description, category, active, fulfillment_type | |
| sys_id | Yes | Topic sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnly=false, idempotent=true, destructive=false, and openWorld=true. The description only repeats that this is a write operation via the **[Write]** tag and adds no further behavioral context such as permission requirements, whether omitted fields are preserved, or what the update returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted prose. The added **[Write]** tag is redundant with the annotations, slightly reducing its efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-field mutation tool with no output schema, the schema and annotations cover parameters and safety hints. However, the description does not clarify update semantics such as partial versus full replacement, prerequisites, or expected outcome, leaving meaningful context gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema fully documents sys_id and the allowed fields object. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Update a Virtual Agent topic properties'), making the operation clear. It does not explicitly differentiate from siblings such as create_va_topic or get_va_topic, but the verb/resource combination is sufficiently distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool instead of create_va_topic, get_va_topic, or list_va_topics_full. It also omits prerequisites or conditions for updating a topic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_vulnerabilityAIdempotent
Update a vulnerability entry (state, risk acceptance notes, remediation date) (requires WRITE_ENABLED=true)
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Fields to update (state, risk_acceptance_notes, remediation_date) | |
| sys_id | Yes | System ID of the vulnerability entry |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true and destructive=false, so the safety profile is covered. The description adds real value by disclosing the WRITE_ENABLED=true gate, but says nothing about whether unspecified fields are left untouched, whether updates are audited, or what happens on an invalid sys_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action, then the fields, then the precondition. No filler and nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters, full schema coverage and no output schema, the essentials are present, and the WRITE_ENABLED gate is a useful addition. However, for an update tool where 'state' is an unconstrained value and 'remediation_date' has no stated format, the description leaves the agent guessing on data shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nested 'fields' object is documented in the schema, so baseline applies. The description only repeats the same three field names without adding format details (e.g. remediation_date format) or valid state values, which is a notable gap for an untyped free-form field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a vulnerability entry') and enumerates the mutable fields, which lets an agent distinguish it from sibling updates such as update_vulnerability_group or update_remediation_task. It does not explicitly say which sibling to prefer, but the resource noun is precise enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical 'requires WRITE_ENABLED=true' is a genuine precondition that tells the agent when the call will fail. Beyond that there is no guidance on when to use this versus update_vulnerability_group, set_remediation_commitment, or add_vi_to_remediation_task, so usage remains implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_vulnerability_groupAIdempotent
Update a Vulnerability Group by sys_id — state transitions, (re)assignment, target date, etc. [Write — requires WRITE_ENABLED=true]
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | State filter. Single value or comma-separated list. 1=Open, 2=Under Investigation, 10=Awaiting Implementation, 11=In Review, 12=Deferred, 101=Resolved, 3=Closed | |
| sys_id | Yes | 32-char sys_id of the Vulnerability Group | |
| assigned_to | No | Assignee sys_id | |
| ttr_target_date | No | Remediation target date (YYYY-MM-DD HH:MM:SS) | |
| assignment_group | No | Assignment group sys_id | |
| short_description | No | Updated short description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds a genuinely non-derivable operational fact: the server-side WRITE_ENABLED gate that will reject the call. It omits partial-update semantics (whether omitted fields are preserved), which is the main remaining behavioral question for a mutation of this kind.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded clause names the entity, the lookup key, and the mutable surface, with the write gate appended as a clear bracketed condition. There is no filler, and the most actionable constraint (WRITE_ENABLED) is impossible to miss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six fully documented parameters, an annotation set covering safety and idempotency, and no output schema to explain, the description supplies everything needed to attempt the call. The only gap is the partial-vs-full update behavior, which an agent would need to know before sending a subset of fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with sys_id length, state enum codes, and date format all documented in the schema itself. The description only names the field categories ('state transitions, (re)assignment, target date'), adding no format or constraint detail beyond what is already structured. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a Vulnerability Group') and pins the key identifier ('by sys_id'), then enumerates the mutation categories it accepts. It does not explicitly distinguish itself from the close sibling update_vulnerability, which operates on a different entity, leaving the agent to infer the boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one useful precondition — 'requires WRITE_ENABLED=true' — which tells the agent when the call is permitted to succeed. It never states when to prefer update_vulnerability (single item) over update_vulnerability_group, nor any exclusions such as closed groups being immutable, so routing between siblings is only implied by naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_attachmentA
Upload a base64-encoded attachment to a ServiceNow record (requires WRITE_ENABLED=true). Useful for adding files, screenshots, or documents to incidents, changes, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Table name (e.g. "incident") | |
| file_name | Yes | File name including extension (e.g. "screenshot.png") | |
| content_type | Yes | MIME type (e.g. "image/png", "application/pdf", "text/plain", "application/json") | |
| record_sys_id | Yes | sys_id of the record to attach the file to | |
| content_base64 | Yes | Base64-encoded file content (standard base64; maximum decoded size: 10 MiB) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly, non-idempotent, non-destructive, open-world behavior; the description adds the WRITE_ENABLED=true gate and the base64 encoding requirement, which are real value. It omits what happens on duplicate file names or oversized payloads at the tool level, and says nothing about the returned attachment identifier.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the operation and its gating prerequisite come first, the use cases second. Zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage and annotations covering the mutation profile, the description is nearly complete. The one gap is that there is no output schema and no hint of what the call returns (presumably an attachment sys_id), which an agent would want in order to reference the uploaded file later.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the five parameters is already documented in detail, including MIME examples and the 10 MiB decoded-size limit. The description only restates 'base64-encoded' and the record target, adding no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb plus resource plus target: 'Upload a base64-encoded attachment to a ServiceNow record'. It is unmistakably distinct from its siblings list_attachments, get_attachment_metadata, and delete_attachment, which read and remove rather than create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the concrete use cases (files, screenshots, documents on incidents, changes) and a hard prerequisite, WRITE_ENABLED=true, that gates the call. It stops short of naming when not to use it or which sibling to prefer for retrieval, but the context is clear enough to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_artifactBIdempotent
Validate an artifact for best practices, security issues, and performance concerns
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Artifact table (e.g. sys_script, sys_script_include) | |
| sys_id | Yes | Artifact sys_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (idempotentHint=true, destructiveHint=false) already indicate safe, idempotent operation. Description adds validation aspects but does not clarify side effects, state changes, or output. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is very concise and front-loaded. No wasted words. Could be slightly more structured but effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and description does not explain return values or results. For a 2-param tool with annotations, some output context is needed. Incomplete for an agent to understand what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. Description adds no additional parameter-level detail beyond what schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses specific verb 'validate' and resource 'artifact'. Mentions three clear aspects: best practices, security issues, performance concerns. Distinguishes from siblings as there are few 'validate' tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. Does not mention prerequisites, scenarios, or exclusions. Lacks contrast with sibling validation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_deploymentAIdempotent
Pre-validate an update set or app before deployment — check for conflicts and missing dependencies
| Name | Required | Description | Default |
|---|---|---|---|
| app_sys_id | No | Scoped app sys_id (alternative to update set) | |
| update_set_sys_id | No | Update set sys_id to validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent, non-destructive, and open world. The description adds that it checks for conflicts and dependencies, but does not disclose additional behavioral traits beyond what annotations provide. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is concise, front-loaded, and contains no superfluous words. Every part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's main behavior but does not explain the output or return value, which would be helpful for an agent. It is adequate for a simple validation tool but lacks completeness regarding results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description reiterates they are alternatives, adding minimal extra value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates deployments of update sets or apps, checking for conflicts and missing dependencies. It distinguishes from sibling tools like validate_artifact and validate_property by focusing on deployment validation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Pre-validate... before deployment' implies its usage context, but there is no explicit guidance on when to use this vs. alternatives like validate_artifact. No when-not-to-use or alternatives provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_propertyAIdempotent
Validate a property value against its declared type constraints without saving
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Property name | |
| value | Yes | Value to validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the important behavioral trait 'without saving', which is not fully captured by annotations (readOnlyHint=false but destructiveHint=false). However, it does not detail other potential side effects or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys the essential information without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple validation tool without an output schema, the description is mostly complete. It could briefly mention what the validation result returns (e.g., valid/invalid or error messages), but it is adequate for understanding the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions ('Property name', 'Value to validate'). The tool description adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('validate'), the resource ('property value'), and the key constraint ('without saving'), making it distinct from sibling tools like validate_artifact or validate_deployment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for validation before saving, but it does not explicitly state when to use this tool versus alternatives or mention any exclusions or prerequisites.
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 tool update
v1.16.0- Changed
review_update_set_best_practices2 fields changed- changed
Input schema / properties / requested_rule_ids / items / enumPrevious value: -[ - "AU-BR-001", - "AU-BR-002", - "AU-CL-004" -]New value: +[ + "AU-BR-001", + "AU-BR-002", + "AU-CL-004", + "AU-QRY-001", + "AU-BR-004", + "AU-BR-005", + "AU-BR-007", + "AU-CL-006" +] - changed
Input schema / properties / requested_rule_ids / maxItemsPrevious value: -3New value: +8
197 tool updates
v1.15.1- Added
acknowledge_alert - Added
act_on_vr_approval - Added
add_vi_to_remediation_task - Added
check_app_upgrade - Added
check_table_access - Added
close_alert - Added
create_archive_rule - Changed
create_business_rule3 fields changed- added
Input schema / properties / action_deleteAdded value: +{ + "description": "Fire on record delete (default: false, matching ServiceNow UI default). See action_insert note.", + "type": "boolean" +} - added
Input schema / properties / action_insertAdded value: +{ + "description": "Fire on record insert (default: true). Irrelevant for when=\"display\"/\"query\". A rule with when=\"before\"/\"after\"/\"async\" and action_insert/action_update/action_delete all false will never fire.", + "type": "boolean" +} - added
Input schema / properties / action_updateAdded value: +{ + "description": "Fire on record update (default: true). See action_insert note.", + "type": "boolean" +}
- Added
create_cleanup_rule - Added
create_compliance_control - Added
create_compliance_policy - Added
create_data_management_policy - Added
create_destroy_rule - Changed
create_epic4 fields changed- added
Input schema / properties / parent_epicAdded value: +{ + "description": "Parent epic sys_id", + "type": "string" +} - added
Input schema / properties / productAdded value: +{ + "description": "Product sys_id (cmdb_model)", + "type": "string" +} - removed
Input schema / properties / projectRemoved value: -{ - "description": "Project sys_id", - "type": "string" -} - added
Input schema / properties / themeAdded value: +{ + "description": "Theme sys_id (scrum_theme)", + "type": "string" +}
- Added
create_grc_entity - Added
create_grc_indicator - Added
create_grc_issue - Removed
create_grc_risk - Changed
create_import_set_row3 fields changed- added
Input schema / properties / import_set_sys_idAdded value: +{ + "description": "sys_id of the Import Set that owns this staging table", + "type": "string" +} - changed
Input schema / properties / staging_table / descriptionPrevious value: -"Staging table name (e.g. \"u_import_incident\"). Must already exist."New value: +"Staging table name (e.g. \"u_import_incident\"). Must already exist and extend sys_import_set_row." - changed
Input schema / requiredPrevious value: -[ - "staging_table", - "data" -]New value: +[ + "staging_table", + "import_set_sys_id", + "data" +]
- Changed
create_mobile_app_config5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / branding_colorRemoved value: -{ - "description": "Primary colour hex", - "type": "string" -} - removed
Input schema / properties / descriptionRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / name / descriptionRemoved value: -"App name" - added
Input schema / properties / name / minLengthAdded value: +1
- Changed
create_mobile_applet8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / app_configRemoved value: -{ - "description": "Parent app config sys_id", - "type": "string" -} - added
Input schema / properties / descriptionAdded value: +{ + "type": "string" +} - removed
Input schema / properties / iconRemoved value: -{ - "description": "Applet icon", - "type": "string" -} - removed
Input schema / properties / name / descriptionRemoved value: -"Applet name" - added
Input schema / properties / name / minLengthAdded value: +1 - removed
Input schema / properties / tableRemoved value: -{ - "description": "Applet data table", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "name", - "table" -]New value: +[ + "name" +]
- Changed
create_mobile_layout7 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / nameRemoved value: -{ - "description": "Layout name", - "type": "string" -} - added
Input schema / properties / screen_sys_idAdded value: +{ + "type": "string" +} - removed
Input schema / properties / tableRemoved value: -{ - "description": "Target table", - "type": "string" -} - removed
Input schema / properties / typeRemoved value: -{ - "description": "Layout type: list, form, detail", - "type": "string" -} - added
Input schema / properties / ui_element_sys_idAdded value: +{ + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name", - "table" -]New value: +[ + "screen_sys_id", + "ui_element_sys_id" +]
- Added
create_remediation_task - Added
create_risk - Changed
create_soap_message5 fields changed- removed
Input schema / properties / activeRemoved value: -{ - "description": "Make active immediately (default: true)", - "type": "boolean" -} - removed
Input schema / properties / endpointRemoved value: -{ - "description": "SOAP service endpoint URL", - "type": "string" -} - removed
Input schema / properties / namespaceRemoved value: -{ - "description": "XML namespace for SOAP body elements", - "type": "string" -} - removed
Input schema / properties / soap_action_prefixRemoved value: -{ - "description": "Prefix prepended to all SOAP action headers", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "name", - "endpoint" -]New value: +[ + "name" +]
- Changed
create_soap_message_function7 fields changed- removed
Input schema / properties / activeRemoved value: -{ - "description": "Make active immediately (default: true)", - "type": "boolean" -} - added
Input schema / properties / envelopeAdded value: +{ + "description": "SOAP XML request envelope template with ${variable} placeholders", + "type": "string" +} - changed
Input schema / properties / function_name / descriptionPrevious value: -"WSDL operation name (matches the SOAP operation)"New value: +"WSDL operation name (matches the SOAP operation; used in scripts to call it)" - removed
Input schema / properties / nameRemoved value: -{ - "description": "Function name (used in scripts to call this operation)", - "type": "string" -} - added
Input schema / properties / soap_endpointAdded value: +{ + "description": "SOAP service endpoint URL for this operation", + "type": "string" +} - removed
Input schema / properties / soap_message_templateRemoved value: -{ - "description": "SOAP XML request body template with ${variable} placeholders", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "soap_message_sys_id", - "name", - "function_name" -]New value: +[ + "soap_message_sys_id", + "function_name" +]
- Added
create_usem_rule - Added
create_vulnerability_group - Added
create_vulnerable_item - Changed
create_workspace5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / iconRemoved value: -{ - "description": "Workspace icon name", - "type": "string" -} - removed
Input schema / properties / tableRemoved value: -{ - "description": "Primary table (e.g. incident)", - "type": "string" -} - added
Input schema / properties / workspace_urlAdded value: +{ + "description": "Legacy workspace URL segment (e.g. agent)", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name", - "table" -]New value: +[ + "name", + "workspace_url" +]
- Added
describe_table - Changed
execute_background_script3 fields changed- removed
Input schema / properties / scopeRemoved value: -{ - "description": "Application scope (default global)", - "type": "string" -} - changed
Input schema / properties / script / descriptionPrevious value: -"JavaScript code to execute"New value: +"JavaScript to execute (max 6000 chars). It is wrapped in a function, so `return` works." - added
Input schema / properties / wait_secondsAdded value: +{ + "description": "How long to wait for the job to run (0-120, default 30). If the scheduler has not run it by then, script_scheduled is returned with the job.", + "type": "number" +}
- Added
get_alert - Added
get_alert_summary - Added
get_archive_restore_status - Added
get_audit_control_test - Added
get_audit_engagement - Removed
get_compliance_assessment - Added
get_compliance_control - Added
get_compliance_policy - Added
get_control_objective - Added
get_data_management_policy - Added
get_discovery_run - Added
get_finding_grouping_status - Added
get_grc_audit_dashboard - Added
get_grc_compliance_dashboard - Added
get_grc_entity - Added
get_grc_indicator - Added
get_grc_indicator_dashboard - Added
get_grc_issue - Removed
get_grc_risk - Added
get_grc_risk_dashboard - Added
get_group_sla - Added
get_indicator_result - Added
get_instance_diagnostics - Added
get_integration_health - Added
get_integration_run - Added
get_license_position_summary - Added
get_mid_server_health - Changed
get_mobile_app_config2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / sys_id / descriptionPrevious value: -"Mobile app config sys_id"New value: +"sys_sg_mobile_application sys_id"
- Added
get_nvd_entry_by_cve - Added
get_performance_history - Added
get_policy_exception - Changed
get_process_automation1 field changed- changed
Input schema / properties / name_or_sysid / descriptionPrevious value: -"Playbook or process name or sys_id"New value: +"Playbook or process internal name, display label, or sys_id"
- Added
get_remediation_sla - Added
get_remediation_task - Added
get_risk - Added
get_risk_calculator_details - Added
get_risk_statement - Added
get_software_install - Added
get_software_lifecycle_report - Added
get_software_model - Added
get_store_app_versions - Added
get_usem_dashboard - Added
get_usem_rule - Added
get_vulnerability_group - Added
get_vulnerable_item - Added
import_excel_to_import_set - Added
list_acc_agents - Added
list_acc_checks - Added
list_acc_policies - Changed
list_active_events2 fields changed- changed
Input schema / properties / query / descriptionPrevious value: -"Filter events (e.g., \"severity=1\")"New value: +"Additional encoded query (e.g., \"severity=1\"). A state clause here overrides the state default." - added
Input schema / properties / stateAdded value: +{ + "description": "unprocessed (default: Ready + Error) | Ready | Processed | Error | Ignored | all", + "type": "string" +}
- Added
list_alerts - Added
list_archive_rules - Changed
list_assets2 fields changed- changed
Input schema / properties / asset_class / descriptionPrevious value: -"Asset class: \"alm_hardware\", \"alm_license\", \"alm_consumable\""New value: +"Asset class table" - added
Input schema / properties / asset_class / enumAdded value: +[ + "alm_asset", + "alm_hardware", + "alm_license", + "alm_consumable" +]
- Added
list_audit_control_tests - Added
list_audit_engagements - Removed
list_audit_results - Added
list_cleanup_rules - Added
list_compliance_controls - Changed
list_compliance_policies6 fields changed- added
Input schema / properties / categoryAdded value: +{ + "type": "string" +} - added
Input schema / properties / display_valueAdded value: +{ + "description": "Return human-readable reference values (true) or both (\"all\")", + "oneOf": [ + { + "type": "boolean" + }, + { + "enum": [ + "all" + ], + "type": "string" + } + ] +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Max records (default 25)"New value: +"Max records (default: 25, max: 1000)" - added
Input schema / properties / queryAdded value: +{ + "description": "Additional raw encoded query appended with ^", + "type": "string" +} - changed
Input schema / properties / state / descriptionPrevious value: -"Filter by state (draft, published, retired)"New value: +"State filter: draft, review, awaiting_approval, published, retired" - removed
Input schema / requiredRemoved value: -[]
- Added
list_control_objectives - Added
list_data_management_policies - Added
list_discovered_devices - Added
list_discovery_credentials - Added
list_discovery_logs - Added
list_discovery_ranges - Added
list_discovery_runs - Added
list_ecc_queue - Changed
list_epics3 fields changed- added
Input schema / properties / productAdded value: +{ + "description": "Filter by product sys_id (cmdb_model)", + "type": "string" +} - removed
Input schema / properties / projectRemoved value: -{ - "description": "Filter by project sys_id", - "type": "string" -} - added
Input schema / properties / themeAdded value: +{ + "description": "Filter by theme sys_id (scrum_theme)", + "type": "string" +}
- Removed
list_grc_controls - Added
list_grc_entities - Added
list_grc_indicators - Added
list_grc_issues - Removed
list_grc_risks - Added
list_indicator_results - Added
list_integration_implementations - Added
list_integration_logs - Added
list_integration_parameters - Added
list_integration_runs - Added
list_integrations - Changed
list_job_run_history8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / job_classificationAdded value: +{ + "description": "Exact scheduler classification (not a sysauto sys_id). Omit to list all classifications.", + "minLength": 1, + "type": "string" +} - removed
Input schema / properties / job_sys_idRemoved value: -{ - "description": "Filter by specific job sys_id", - "type": "string" -} - changed
Input schema / properties / limit / descriptionPrevious value: -"Max results (default: 25)"New value: +"Max aggregate rows (default: 25), not execution count" - added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - removed
Input schema / properties / statusRemoved value: -{ - "description": "Filter by run status: success, error, canceled", - "type": "string" -}
- Added
list_license_positions - Added
list_mid_extension_contexts - Added
list_mid_server_issues - Changed
list_mobile_app_configs5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / activeRemoved value: -{ - "description": "Filter active (default true)", - "type": "boolean" -} - added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
list_mobile_applets6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / app_configRemoved value: -{ - "description": "Filter by app config sys_id", - "type": "string" -} - added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / scopeAdded value: +{ + "description": "Application scope sys_id", + "type": "string" +}
- Changed
list_mobile_layouts5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / screen_sys_idAdded value: +{ + "type": "string" +}
- Added
list_nvd_entries - Added
list_policy_exceptions - Changed
list_process_automations1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Search by name or description"New value: +"Search by internal name, display label, or description"
- Added
list_remediation_sla - Added
list_remediation_task_findings - Added
list_remediation_tasks - Added
list_risk_criteria - Added
list_risk_statements - Added
list_risks - Changed
list_security_playbooks2 fields changed- removed
Input schema / properties / categoryRemoved value: -{ - "description": "Filter by category (incident_response, threat_hunting, compliance)", - "type": "string" -} - added
Input schema / properties / queryAdded value: +{ + "description": "Search by playbook label or name", + "type": "string" +}
- Changed
list_soap_messages2 fields changed- removed
Input schema / properties / activeRemoved value: -{ - "description": "Filter by active status", - "type": "boolean" -} - changed
Input schema / properties / query / descriptionPrevious value: -"Search by name or endpoint"New value: +"Search by name or description"
- Added
list_software_discovery_models - Added
list_software_installs - Added
list_software_lifecycle_entries - Added
list_software_lifecycle_reports - Added
list_software_models - Added
list_software_products - Added
list_usem_rules - Added
list_vr_approvals - Added
list_vr_exception_requests - Added
list_vr_notifications - Added
list_vulnerability_groups - Added
list_vulnerable_items - Changed
publish_flow1 field changed- added
Input schema / properties / type / enumAdded value: +[ + "flow", + "subflow" +]
- Changed
query_records1 field changed- added
Input schema / properties / display_valueAdded value: +{ + "description": "Return human-readable values for reference/choice fields. true = display values only ({display_value, link}); \"all\" = both raw and display ({value, display_value, link}). Omit for raw sys_id/values.", + "oneOf": [ + { + "type": "boolean" + }, + { + "enum": [ + "all" + ], + "type": "string" + } + ] +}
- Added
restore_archived_record - Added
review_update_set_best_practices - Changed
run_discovery_scan1 field changed- changed
Input schema / properties / mid_server / descriptionPrevious value: -"Optional MID server name"New value: +"Optional MID server sys_id — pins the schedule to this specific MID"
- Changed
run_security_playbook6 fields changed- changed
Input schema / properties / incident_sys_id / descriptionPrevious value: -"Security incident sys_id to run against"New value: +"Security incident (sn_si_incident) sys_id to run against" - removed
Input schema / properties / parametersRemoved value: -{ - "description": "Optional playbook input parameters", - "type": "object" -} - added
Input schema / properties / playbookAdded value: +{ + "description": "Playbook sys_id or scoped name (sys_pd_process_definition.name, e.g. \"security_incident_malware_manual_template_v1\"). See list_security_playbooks.", + "type": "string" +} - changed
Input schema / properties / playbook_sys_id / descriptionPrevious value: -"Playbook sys_id to execute"New value: +"Alias of playbook (accepted for compatibility)." - added
Input schema / properties / wait_secondsAdded value: +{ + "description": "Poll sys_pd_context for the new execution for up to this many seconds (0-180, default 0 = return right after scheduling).", + "type": "number" +} - changed
Input schema / requiredPrevious value: -[ - "playbook_sys_id", - "incident_sys_id" -]New value: +[ + "incident_sys_id" +]
- Added
scan_update_set_sca - Changed
scan_vulnerabilities7 fields changed- changed
Input schema / properties / ci_sys_ids / descriptionPrevious value: -"CI sys_ids to scan"New value: +"cmdb_ci sys_ids to scan (max 200). Use this or vulnerable_item_sys_ids, not both." - removed
Input schema / properties / groupRemoved value: -{ - "description": "CI group to scan (alternative to ci_sys_ids)", - "type": "string" -} - added
Input schema / properties / initiateAdded value: +{ + "description": "true (default): set the scan to Processing so the scanner integration picks it up. false: leave it in Draft.", + "type": "boolean" +} - removed
Input schema / properties / scan_typeRemoved value: -{ - "description": "Scan type: full, quick, compliance (default full)", - "type": "string" -} - added
Input schema / properties / scanner_sys_idAdded value: +{ + "description": "sn_vul_scanner sys_id. Defaults to the active scanner flagged as default.", + "type": "string" +} - added
Input schema / properties / vulnerable_item_sys_idsAdded value: +{ + "description": "sn_vul_vulnerable_item sys_ids to rescan (max 200)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / wait_secondsAdded value: +{ + "description": "How long to wait for the run-once job that creates the scan (0-120, default 30). If it has not run by then the job is left scheduled and scan_scheduled is returned.", + "type": "number" +}
- Added
search_store_apps - Added
set_archive_rule_active - Added
set_cleanup_rule_active - Added
set_destroy_rule_active - Added
set_integration_active - Added
set_remediation_commitment - Added
set_usem_rule_active - Added
smart_query - Changed
trend_query5 fields changed- added
Input schema / properties / periods / defaultAdded value: +6 - changed
Input schema / properties / periods / descriptionPrevious value: -"Number of months to look back (default: 6)"New value: +"Number of months to look back (1–120, default: 6)" - added
Input schema / properties / periods / maximumAdded value: +120 - added
Input schema / properties / periods / minimumAdded value: +1 - changed
Input schema / properties / periods / typePrevious value: -"number"New value: +"integer"
- Added
update_alert - Changed
update_asset2 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - added
Input schema / properties / fields / propertiesAdded value: +{ + "asset_tag": {}, + "assigned_to": {}, + "comments": {}, + "cost": {}, + "cost_center": {}, + "display_name": {}, + "disposal_date": {}, + "disposal_reason": {}, + "install_status": {}, + "location": {}, + "model": {}, + "model_category": {}, + "purchase_date": {}, + "serial_number": {}, + "work_notes": {} +}
- Changed
update_business_rule3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Key-value pairs to update (name, script, active, condition, etc.)"New value: +"Allowed fields: name, collection, when, script, condition, active, order, action_insert, action_update, action_delete" - added
Input schema / properties / fields / propertiesAdded value: +{ + "action_delete": {}, + "action_insert": {}, + "action_update": {}, + "active": {}, + "collection": {}, + "condition": {}, + "name": {}, + "order": {}, + "script": {}, + "when": {} +}
- Changed
update_catalog_item2 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - added
Input schema / properties / fields / propertiesAdded value: +{ + "active": {}, + "category": {}, + "delivery_time": {}, + "description": {}, + "name": {}, + "price": {}, + "roles": {}, + "short_description": {} +}
- Changed
update_change_request2 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - added
Input schema / properties / fields / propertiesAdded value: +{ + "assigned_to": {}, + "assignment_group": {}, + "backout_plan": {}, + "category": {}, + "close_code": {}, + "close_notes": {}, + "cmdb_ci": {}, + "description": {}, + "end_date": {}, + "impact": {}, + "implementation_plan": {}, + "priority": {}, + "risk": {}, + "short_description": {}, + "start_date": {}, + "state": {}, + "test_plan": {}, + "type": {} +}
- Changed
update_client_script3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Fields to update (script, active, name, type, etc.)"New value: +"Allowed fields: name, table, type, script, field_name, active, global" - added
Input schema / properties / fields / propertiesAdded value: +{ + "active": {}, + "field_name": {}, + "global": {}, + "name": {}, + "script": {}, + "table": {}, + "type": {} +}
- Added
update_compliance_control - Added
update_compliance_policy - Changed
update_csm_case2 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - added
Input schema / properties / fields / propertiesAdded value: +{ + "account": {}, + "assigned_to": {}, + "assignment_group": {}, + "category": {}, + "close_code": {}, + "close_notes": {}, + "contact": {}, + "description": {}, + "priority": {}, + "product": {}, + "short_description": {}, + "state": {}, + "subcategory": {}, + "work_notes": {} +}
- Changed
update_dashboard2 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - added
Input schema / properties / fields / propertiesAdded value: +{ + "active": {}, + "description": {}, + "name": {}, + "roles": {} +}
- Changed
update_epic3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Key-value pairs to update"New value: +"Allowed fields: short_description, description, product, theme, parent_epic" - added
Input schema / properties / fields / propertiesAdded value: +{ + "description": {}, + "parent_epic": {}, + "product": {}, + "short_description": {}, + "theme": {} +}
- Added
update_grc_entity - Added
update_grc_indicator - Added
update_grc_issue - Changed
update_group3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Key-value pairs to update"New value: +"Allowed fields: name, description, manager" - added
Input schema / properties / fields / propertiesAdded value: +{ + "description": {}, + "manager": {}, + "name": {} +}
- Changed
update_hr_case2 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - added
Input schema / properties / fields / propertiesAdded value: +{ + "assigned_to": {}, + "assignment_group": {}, + "close_code": {}, + "close_notes": {}, + "description": {}, + "hr_service": {}, + "priority": {}, + "short_description": {}, + "state": {}, + "subject_person": {}, + "work_notes": {} +}
- Changed
update_hr_profile3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"HR profile fields to update (e.g., {\"department\": \"Engineering\"})"New value: +"HR profile fields to update: department, manager, location, job_title" - added
Input schema / properties / fields / propertiesAdded value: +{ + "department": {}, + "job_title": {}, + "location": {}, + "manager": {} +}
- Changed
update_incident2 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - added
Input schema / properties / fields / propertiesAdded value: +{ + "assigned_to": {}, + "assignment_group": {}, + "caller_id": {}, + "category": {}, + "close_code": {}, + "close_notes": {}, + "cmdb_ci": {}, + "comments": {}, + "contact_type": {}, + "description": {}, + "hold_reason": {}, + "impact": {}, + "location": {}, + "priority": {}, + "resolved_at": {}, + "resolved_by": {}, + "short_description": {}, + "state": {}, + "subcategory": {}, + "urgency": {}, + "watch_list": {}, + "work_notes": {} +}
- Changed
update_knowledge_article2 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - added
Input schema / properties / fields / propertiesAdded value: +{ + "category": {}, + "kb_knowledge_base": {}, + "short_description": {}, + "text": {} +}
- Changed
update_notification2 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - added
Input schema / properties / fields / propertiesAdded value: +{ + "active": {}, + "collection": {}, + "condition": {}, + "event_name": {}, + "message_html": {}, + "name": {}, + "recipient_fields": {}, + "schedule": {}, + "subject": {} +}
- Changed
update_portal_widget3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Fields to update: template, css, client_script, server_script, name, etc."New value: +"Allowed fields: name, id, template, css, client_script, script, server_script, option_schema, demo_data" - added
Input schema / properties / fields / propertiesAdded value: +{ + "client_script": {}, + "css": {}, + "demo_data": {}, + "id": {}, + "name": {}, + "option_schema": {}, + "script": {}, + "server_script": {}, + "template": {} +}
- Changed
update_problem2 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - added
Input schema / properties / fields / propertiesAdded value: +{ + "assigned_to": {}, + "assignment_group": {}, + "category": {}, + "cause_notes": {}, + "cmdb_ci": {}, + "comments": {}, + "description": {}, + "duplicate_of": {}, + "fix_notes": {}, + "impact": {}, + "known_error": {}, + "parent": {}, + "priority": {}, + "resolved_at": {}, + "short_description": {}, + "state": {}, + "subcategory": {}, + "urgency": {}, + "work_notes": {}, + "workaround": {} +}
- Added
update_remediation_task - Changed
update_report3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Fields to update (title, type, query, field, aggregate, etc.)"New value: +"Allowed fields: title, table, type, field, filter_fields, query, aggregate, group_by, roles" - added
Input schema / properties / fields / propertiesAdded value: +{ + "aggregate": {}, + "field": {}, + "filter_fields": {}, + "group_by": {}, + "query": {}, + "roles": {}, + "table": {}, + "title": {}, + "type": {} +}
- Added
update_risk - Changed
update_scheduled_job3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Fields to update (name, script, active, run_type, run_time, etc.)"New value: +"Allowed fields: name, script, run_type, run_time, run_period, active" - added
Input schema / properties / fields / propertiesAdded value: +{ + "active": {}, + "name": {}, + "run_period": {}, + "run_time": {}, + "run_type": {}, + "script": {} +}
- Changed
update_scoped_app3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Fields to update (name, version, short_description, description, active, vendor, etc.)"New value: +"Allowed fields: name, version, short_description, description, vendor, active, logo" - added
Input schema / properties / fields / propertiesAdded value: +{ + "active": {}, + "description": {}, + "logo": {}, + "name": {}, + "short_description": {}, + "vendor": {}, + "version": {} +}
- Changed
update_script_include3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Key-value pairs to update"New value: +"Allowed fields: name, script, api_name, access, active" - added
Input schema / properties / fields / propertiesAdded value: +{ + "access": {}, + "active": {}, + "api_name": {}, + "name": {}, + "script": {} +}
- Changed
update_scrum_task3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Key-value pairs to update"New value: +"Allowed fields: short_description, story, assigned_to" - added
Input schema / properties / fields / propertiesAdded value: +{ + "assigned_to": {}, + "short_description": {}, + "story": {} +}
- Changed
update_security_incident2 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - added
Input schema / properties / fields / propertiesAdded value: +{ + "affected_cis": {}, + "assignment_group": {}, + "category": {}, + "containment_status": {}, + "description": {}, + "severity": {}, + "short_description": {}, + "state": {}, + "subcategory": {} +}
- Changed
update_story3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Key-value pairs to update"New value: +"Allowed fields: short_description, story_points, sprint, epic, description, assigned_to" - added
Input schema / properties / fields / propertiesAdded value: +{ + "assigned_to": {}, + "description": {}, + "epic": {}, + "short_description": {}, + "sprint": {}, + "story_points": {} +}
- Changed
update_task3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Key-value pairs to update"New value: +"Allowed fields: short_description, description, state, priority, assigned_to, assignment_group, work_notes, comments, close_notes, due_date, active" - added
Input schema / properties / fields / propertiesAdded value: +{ + "active": {}, + "assigned_to": {}, + "assignment_group": {}, + "close_notes": {}, + "comments": {}, + "description": {}, + "due_date": {}, + "priority": {}, + "short_description": {}, + "state": {}, + "work_notes": {} +}
- Changed
update_ui_action3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Fields to update (name, script, active, condition, etc.)"New value: +"Allowed fields: name, table, action_name, script, condition, action_type, active, form_button, list_button" - added
Input schema / properties / fields / propertiesAdded value: +{ + "action_name": {}, + "action_type": {}, + "active": {}, + "condition": {}, + "form_button": {}, + "list_button": {}, + "name": {}, + "script": {}, + "table": {} +}
- Added
update_usem_rule - Changed
update_user3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Key-value pairs to update"New value: +"Allowed fields: user_name, email, first_name, last_name, title, department" - added
Input schema / properties / fields / propertiesAdded value: +{ + "department": {}, + "email": {}, + "first_name": {}, + "last_name": {}, + "title": {}, + "user_name": {} +}
- Changed
update_va_topic3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Fields to update (name, description, active, etc.)"New value: +"Allowed fields: name, description, category, active, fulfillment_type" - added
Input schema / properties / fields / propertiesAdded value: +{ + "active": {}, + "category": {}, + "description": {}, + "fulfillment_type": {}, + "name": {} +}
- Changed
update_vulnerability3 fields changed- added
Input schema / properties / fields / additionalPropertiesAdded value: +false - changed
Input schema / properties / fields / descriptionPrevious value: -"Fields to update (state, risk_acceptance_notes, remediation_date, etc.)"New value: +"Fields to update (state, risk_acceptance_notes, remediation_date)" - added
Input schema / properties / fields / propertiesAdded value: +{ + "remediation_date": {}, + "risk_acceptance_notes": {}, + "state": {} +}
- Added
update_vulnerability_group - Changed
upload_attachment2 fields changed- changed
Input schema / properties / content_base64 / descriptionPrevious value: -"Base64-encoded file content (use standard base64 encoding)"New value: +"Base64-encoded file content (standard base64; maximum decoded size: 10 MiB)" - added
Input schema / properties / content_base64 / maxLengthAdded value: +13981016
376 tool updates
v1.0.2- First observed
add_comment - First observed
add_user_to_group - First observed
add_work_note - First observed
ai_search - First observed
analyze_data_quality - First observed
approve_request - First observed
bulk_get_properties - First observed
bulk_set_properties - First observed
cancel_request - First observed
categorize_incident - First observed
check_table_completeness - First observed
clone_artifact - First observed
close_change_request - First observed
close_csm_case - First observed
close_hr_case - First observed
close_incident - First observed
cmdb_health_dashboard - First observed
cmdb_impact_analysis - First observed
commit_changeset - First observed
compare_record_counts - First observed
complete_task - First observed
complete_update_set - First observed
configure_offline_sync - First observed
configure_workspace_list - First observed
create_acl - First observed
create_approval_rule - First observed
create_asset - First observed
create_business_rule - First observed
create_catalog_item - First observed
create_catalog_ui_policy - First observed
create_catalog_variable - First observed
create_change_request - First observed
create_ci_relationship - First observed
create_client_script - First observed
create_csm_case - First observed
create_dashboard - First observed
create_devops_change - First observed
create_epic - First observed
create_flow - First observed
create_flow_action - First observed
create_grc_risk - First observed
create_group - First observed
create_hr_case - First observed
create_hr_task - First observed
create_import_set_row - First observed
create_incident - First observed
create_knowledge_article - First observed
create_kpi - First observed
create_mobile_app_config - First observed
create_mobile_applet - First observed
create_mobile_layout - First observed
create_notification - First observed
create_offboarding_case - First observed
create_onboarding_case - First observed
create_portal - First observed
create_portal_page - First observed
create_portal_widget - First observed
create_problem - First observed
create_report - First observed
create_rest_message - First observed
create_scheduled_job - First observed
create_scheduled_report - First observed
create_scoped_app - First observed
create_script_include - First observed
create_scrum_task - First observed
create_security_incident - First observed
create_soap_message - First observed
create_soap_message_function - First observed
create_solution_package - First observed
create_story - First observed
create_subflow - First observed
create_ui_action - First observed
create_ui_policy - First observed
create_uib_component - First observed
create_uib_data_broker - First observed
create_uib_page - First observed
create_update_set - First observed
create_user - First observed
create_ux_app_route - First observed
create_ux_experience - First observed
create_va_topic - First observed
create_workspace - First observed
delete_attachment - First observed
delete_system_property - First observed
delete_uib_page - First observed
ensure_active_update_set - First observed
execute_background_script - First observed
export_properties - First observed
export_report_data - First observed
export_update_set - First observed
find_artifact - First observed
fire_event - First observed
generate_summary - First observed
generate_work_notes - First observed
get_acl - First observed
get_asset - First observed
get_atf_failure_insight - First observed
get_atf_suite - First observed
get_atf_suite_result - First observed
get_atf_test - First observed
get_attachment_metadata - First observed
get_business_rule - First observed
get_catalog_item - First observed
get_change_request - First observed
get_changeset - First observed
get_client_script - First observed
get_cmdb_ci - First observed
get_compliance_assessment - First observed
get_csm_account - First observed
get_csm_case - First observed
get_csm_case_sla - First observed
get_csm_contact - First observed
get_current_instance - First observed
get_current_update_set - First observed
get_deployment - First observed
get_devops_insights - First observed
get_devops_pipeline - First observed
get_email_log - First observed
get_event_registry_entry - First observed
get_flow - First observed
get_flow_error_log - First observed
get_flow_execution - First observed
get_grc_risk - First observed
get_group - First observed
get_hr_case - First observed
get_hr_case_activity - First observed
get_hr_lifecycle_events - First observed
get_hr_profile - First observed
get_hr_service - First observed
get_import_set - First observed
get_incident - First observed
get_knowledge_article - First observed
get_license_compliance - First observed
get_license_optimization - First observed
get_mobile_analytics - First observed
get_mobile_app_config - First observed
get_ms_copilot_topics - First observed
get_my_approvals - First observed
get_notification - First observed
get_pa_dashboard - First observed
get_pa_indicator - First observed
get_pa_job - First observed
get_pa_scorecard - First observed
get_pa_time_series - First observed
get_performance_analytics - First observed
get_pi_models - First observed
get_portal - First observed
get_portal_page - First observed
get_portal_theme - First observed
get_portal_widget - First observed
get_problem - First observed
get_process_automation - First observed
get_property_history - First observed
get_record - First observed
get_report - First observed
get_request - First observed
get_request_item - First observed
get_rest_message - First observed
get_scheduled_job - First observed
get_scoped_app - First observed
get_script_include - First observed
get_security_dashboard - First observed
get_security_incident - First observed
get_sla_details - First observed
get_soap_message - First observed
get_subflow - First observed
get_sys_log - First observed
get_system_property - First observed
get_table_record_count - First observed
get_table_schema - First observed
get_task - First observed
get_threat_intelligence - First observed
get_transform_map - First observed
get_ui_action - First observed
get_ui_policy - First observed
get_uib_page - First observed
get_user - First observed
get_ux_app - First observed
get_va_conversation - First observed
get_va_topic - First observed
get_virtual_agent_topics - First observed
get_vulnerability - First observed
get_workspace - First observed
import_cmdb_data - First observed
import_properties - First observed
list_acls - First observed
list_action_instances - First observed
list_active_events - First observed
list_active_slas - First observed
list_approvals - First observed
list_asset_contracts - First observed
list_assets - First observed
list_atf_suites - First observed
list_atf_test_results - First observed
list_atf_tests - First observed
list_attachments - First observed
list_audit_results - First observed
list_business_rules - First observed
list_catalog_items - First observed
list_change_requests - First observed
list_changesets - First observed
list_client_scripts - First observed
list_compliance_policies - First observed
list_credential_aliases - First observed
list_csm_accounts - First observed
list_csm_cases - First observed
list_csm_contacts - First observed
list_csm_products - First observed
list_data_sources - First observed
list_deployment_history - First observed
list_deployments - First observed
list_devops_pipelines - First observed
list_discovery_schedules - First observed
list_email_logs - First observed
list_email_templates - First observed
list_epics - First observed
list_event_log - First observed
list_event_registry - First observed
list_flow_executions - First observed
list_flows - First observed
list_grc_controls - First observed
list_grc_risks - First observed
list_groups - First observed
list_homepages - First observed
list_hr_cases - First observed
list_hr_document_templates - First observed
list_hr_services - First observed
list_hr_tasks - First observed
list_import_sets - First observed
list_instances - First observed
list_job_run_history - First observed
list_knowledge_bases - First observed
list_mid_servers - First observed
list_mobile_app_configs - First observed
list_mobile_applets - First observed
list_mobile_layouts - First observed
list_my_tasks - First observed
list_notification_subscriptions - First observed
list_notifications - First observed
list_oauth_applications - First observed
list_pa_breakdowns - First observed
list_pa_dashboards - First observed
list_pa_indicators - First observed
list_pa_jobs - First observed
list_portal_pages - First observed
list_portal_themes - First observed
list_portal_widgets - First observed
list_portals - First observed
list_process_automations - First observed
list_property_categories - First observed
list_relationships - First observed
list_reports - First observed
list_request_items - First observed
list_requests - First observed
list_rest_message_functions - First observed
list_rest_messages - First observed
list_scheduled_jobs - First observed
list_scoped_apps - First observed
list_script_includes - First observed
list_scrum_tasks - First observed
list_security_incidents - First observed
list_security_playbooks - First observed
list_soap_message_functions - First observed
list_soap_messages - First observed
list_software_licenses - First observed
list_stories - First observed
list_subflows - First observed
list_system_properties - First observed
list_transform_field_maps - First observed
list_transform_maps - First observed
list_ui_actions - First observed
list_ui_policies - First observed
list_uib_components - First observed
list_uib_data_brokers - First observed
list_uib_pages - First observed
list_update_sets - First observed
list_users - First observed
list_ux_apps - First observed
list_ux_pages - First observed
list_va_categories - First observed
list_va_conversations - First observed
list_va_topics_full - First observed
list_vulnerabilities - First observed
list_widget_instances - First observed
list_workspaces - First observed
ml_detect_anomalies - First observed
ml_evaluate_model - First observed
ml_forecast_incidents - First observed
ml_model_training_history - First observed
ml_predict_change_risk - First observed
ml_process_optimization - First observed
ml_train_anomaly_detector - First observed
ml_train_change_risk - First observed
ml_train_incident_classifier - First observed
ml_virtual_agent_nlu - First observed
natural_language_search - First observed
natural_language_update - First observed
nlq_query - First observed
order_catalog_item - First observed
preview_update_set - First observed
publish_changeset - First observed
publish_flow - First observed
publish_knowledge_article - First observed
query_records - First observed
register_event - First observed
reject_request - First observed
remove_user_from_group - First observed
resolve_incident - First observed
resolve_problem - First observed
retire_asset - First observed
retire_knowledge_article - First observed
rollback_deployment - First observed
run_aggregate_query - First observed
run_atf_suite - First observed
run_atf_test - First observed
run_discovery_scan - First observed
run_security_playbook - First observed
run_transform_map - First observed
scan_vulnerabilities - First observed
schedule_cab_meeting - First observed
schedule_notification - First observed
search_catalog - First observed
search_cmdb_ci - First observed
search_knowledge - First observed
search_system_properties - First observed
send_emergency_broadcast - First observed
send_push_notification - First observed
service_mapping_summary - First observed
set_system_property - First observed
submit_change_for_approval - First observed
suggest_resolution - First observed
switch_instance - First observed
switch_update_set - First observed
test_flow - First observed
track_asset_lifecycle - First observed
track_deployment - First observed
trend_query - First observed
trigger_agentic_playbook - First observed
trigger_flow - First observed
trigger_scheduled_job - First observed
update_acl - First observed
update_asset - First observed
update_business_rule - First observed
update_catalog_item - First observed
update_change_request - First observed
update_client_script - First observed
update_csm_case - First observed
update_dashboard - First observed
update_epic - First observed
update_group - First observed
update_hr_case - First observed
update_hr_profile - First observed
update_incident - First observed
update_knowledge_article - First observed
update_notification - First observed
update_portal_widget - First observed
update_problem - First observed
update_report - First observed
update_request_item - First observed
update_scheduled_job - First observed
update_scoped_app - First observed
update_script_include - First observed
update_scrum_task - First observed
update_security_incident - First observed
update_story - First observed
update_task - First observed
update_ui_action - First observed
update_uib_component - First observed
update_uib_page - First observed
update_user - First observed
update_va_topic - First observed
update_vulnerability - First observed
upload_attachment - First observed
validate_artifact - First observed
validate_deployment - First observed
validate_property
TDQS
Scored across 503 tools
The set contains many overlapping access patterns: query_records, smart_query, natural_language_search, nlq_query, ai_search, and search_knowledge all retrieve data through subtly different mechanisms. There are also multiple dashboard, property-management, update-set, and mobile tools whose boundaries require careful reading to distinguish. Individual descriptions are often detailed, but at 503 tools the risk of misselection across similar resources and actions is high.
Most tool names follow a readable snake_case verb_noun convention (e.g. create_incident, list_users, update_problem, get_hr_case). There are deviations such as query_records, describe_table, find_artifact, smart_query, and domain-prefixed ml_* tools, but they remain understandable rather than chaotic. The naming is mostly predictable despite the enormous surface.
503 tools is an extreme mismatch for a coherent MCP server surface and far beyond the recommended 3-15 tool range. Even with broad ServiceNow coverage, this volume makes discovery, selection, and maintenance impractical for an agent. The server appears to expose nearly every platform operation rather than a curated, well-scoped toolkit.
Coverage spans many ServiceNow domains—ITSM, HR, CSM, GRC, security, CMDB, reporting, integrations, platform metadata, and more—so many core workflows are represented. However, coverage is uneven: several tools are explicitly unsupported stubs, delete operations are sparse outside a few areas, and some modules have rich read surfaces but limited lifecycle coverage. It is extensive but not a complete, clean lifecycle surface for the stated broad purpose.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Any REST/SOAP/GraphQL/OData/SQL API as MCP tools for Claude & ChatGPT. 561 connectors: SAP, ERP.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Connect any AI agent to 1,000+ apps and 27,000+ actions through one remote MCP server (OAuth).
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables natural language interaction with ServiceNow instances for managing incidents, changes, CMDB, service catalog, users, groups, and knowledge base via MCP.4126 npm1MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for ServiceNow that provides over 60 pre-built tools for ITSM, ITOM, and App Dev operations, enabling AI agents to manage incidents, changes, users, service catalog, and projects through a unified interface.6MIT
- AlicenseAqualityAmaintenanceEnables AI agents to interact with ServiceNow through MCP, providing schema inspection, record CRUD, attachments, audit, Flow Designer, and platform investigations with policy-guarded access.151,918 PyPI4MIT
- AlicenseBqualityAmaintenanceConnect Claude AI to ServiceNow with 19 tools and 5 resources for incidents, CMDB, update sets, and more, accessible from any MCP client over stdio or Streamable HTTP.20656 PyPI26MIT