Skip to main content
Glama
TaiRaven
by TaiRaven

sn-mcp

Local MCP server for ServiceNow: 78 tools across 15 domains — incidents, changes, catalog, knowledge base, users/groups, script includes, Agile (story/scrum task/project), classic Workflow, and the two original on-demand reports the project started as. Most of that surface is a full read/write port of echelon-ai-labs/servicenow-mcp, a larger Python/FastMCP ServiceNow server. Built from a plan kept in the author's private Obsidian vault ("ServiceNow MCP Server — Syslog & Dev Work Reports (Plan)"); the full read/write port that took this from 2 tools to 78 followed its own separate plan, preserved at C:\Users\willr\.claude\plans\structured-spinning-rain.md. Setup narrative and troubleshooting also live in that vault, in a matching "(Setup Guide)" note — not included in this repo.

Borrowed from the reference project: a remote-reachable HTTP transport alongside stdio (step 7 below) — it exposes both stdio and SSE, this project uses stdio and the modern Streamable HTTP equivalent; ServiceNow's own relative-date keywords informed comparing against this project's own date-range query style, which is what originally surfaced the timezone bug described in step 4/Troubleshooting; and (from the full port) its 82-tool inventory across 14 domains, ported with full read/write parity per an explicit user decision — not its AuthManager (Basic/OAuth/API-key behind one interface), which stays out of scope; this project remains Basic-only.

Build history

Commit

What

3a30861

Original build: get_syslog_report + get_developer_work_report, stdio transport.

e4e6c68

Batch 0+1 of 8 — write CRUD layer (createRecord/updateRecord/deleteRecord) + Incident tools.

e450682

Batch 2 of 8 — User & Group tools.

63936c7

Batch 3 of 8 — Catalog tools.

34c08a9

Batch 4 of 8 — Change & Changeset tools.

873879d

Batch 5 of 8 — Knowledge Base tools.

0163165

Batch 6 of 8 — Story, Scrum Task & Project tools; epic tools dropped (see gap list below).

498ff17

Batch 7 of 8 — Script Include tools.

6a00bfc

Batch 8 of 8 (final) — classic Workflow tools; 3 tools dropped (see gap list below). Port complete: 76/82 reference tools shipped.

7a2fb41

Full README documentation pass: per-domain tool reference, dropped-tool rationale, corrected account-provisioning guidance.

Each batch was verified end-to-end through real MCP tool calls (not just direct function tests) before committing — create/update/list at minimum, with test data tagged [MCP-TEST] and cleaned up afterward. Full per-batch build notes, gotchas, and platform-specific findings live in project memory, not this file.

Of the reference's 82 tools, 76 were ported (giving 78 total with the 2 original report tools). 6 were deliberately not ported — not porting mistakes, each confirmed against this PDI's live schema before being dropped:

  • create_epic / update_epic / list_epicsrm_epic is not a valid table on this PDI (confirmed via sys_db_object; this instance's Agile plugin install is scrum-only, no Epic/Project-portfolio linkage).

  • activate_workflow / deactivate_workflowwf_workflow has no active field on this PDI at all (confirmed by dumping every element on the table).

  • reorder_workflow_activitieswf_activity has no order field either; classic Workflow ordering here is driven by a visual transition graph, not a simple integer.

get_optimization_recommendations is ported but partially simulated — see its entry below. percent_complete on the project tools is intentionally renamed from the reference's percentage_complete, which is a genuine bug in the reference project (doesn't match the real pm_project column, so it silently no-ops there). Full per-batch build notes, gotchas, and platform gaps live in project memory (project_servicenow_mcp_reports.md) and in code comments at each domain file (src/tools/*.ts).

Related MCP server: ServiceNow MCP Server

Tools

Reports (read-only)

Both are read-only GET queries against the Table API — neither tool ever writes to the instance. Both return raw/grouped rows only; analysis (suggested fixes, flagged concerns) happens in conversation with Claude, not inside the tool. Both paginate automatically (queryTableAll in servicenow-client.ts, 1000 rows/page, 10,000-row safety cap) instead of a hardcoded single-page sysparm_limit — if a query hits the cap, the response leads with an explicit ⚠ Truncated text block before the JSON, rather than silently returning a partial report. Registered for both entrypoints from the same src/create-server.ts.

get_syslog_report

Fetch syslog rows for a single day, filtered to warning/error by default.

Parameter

Type

Required

Default

Notes

date

string

no

yesterday

YYYY-MM-DD

levels

string[]

no

["warning","error"]

Friendly names (trace/debug/info/warning/error/fatal), mapped internally to this instance's numeric syslog.level codes — see README §4 if pointing at a different instance.

Returns a JSON array of:

{
  "sys_created_on": "2026-08-25 17:30:24",
  "message": "SG-Azure Request failed with statusCode: 403 Code: AccessDenied ...",
  "source": "sn_sg_azure_integ",
  "level": "2",
  "node": "..."
}

get_developer_work_report

Fetch sys_update_xml changes between two dates, grouped by author and update set.

Parameter

Type

Required

Default

Notes

start_date

string

yes

YYYY-MM-DD

end_date

string

yes

YYYY-MM-DD

Returns a JSON array of:

{
  "author": "system",
  "updateSet": "Default",
  "isDefaultUpdateSet": true,
  "changeCount": 2,
  "changes": [
    { "name": "...", "type": "Service Graph Connections State", "created": "2026-08-25 10:30:30" }
  ]
}

ServiceNow Docs (src/tools/docs.ts + src/docs/docs-client.ts, 3 tools)

Read-only full-text search over the official ServiceNow product documentation, served from a local SQLite FTS5 index (one ServiceNow release per index). The index is built by the one canonical builder, ServiceNowDocs/tools/build_index.py — this server never re-implements indexing; it reads the DB that builder produces, and (via docs_reindex) calls that builder to rebuild it.

One source of truth, no drift. The index shape — columns, porter unicode61 tokenizer, bm25 weights (title 10 > breadcrumb 6 > description 4 > body 1), and the query tokeniser — is defined once in ServiceNowDocs/tools/index_schema.json. build_index.py and query_index.py read it through index_schema.py; the builder also writes a copy (a sidecar, index_schema.json) next to every DB it produces, and docs-client.ts reads that sidecar. So a DB always carries the exact schema it was built with, and the TypeScript reader can never disagree with the Python builder. If no sidecar/schema is found, the reader falls back to a built-in default that mirrors the JSON.

Every hit carries a citation URL baked into the index at build time (https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/<branch>/<path>). Snippets are for ranking only — call docs_get to read a doc in full before quoting it.

Env: SN_DOCS_DB (path to the docsearch.db; baked in the container, point at your checkout locally), SN_DOCS_SCHEMA (schema location; defaults to the sidecar beside the DB), SN_DOCS_BRANCH (release label for responses), and for docs_reindex: SN_DOCS_REPO (a ServiceNowDocs checkout), SN_DOCS_BUILDER / SN_DOCS_PYTHON (overrides). See .env.example.

Ranked full-text search. Returns hits with title, citation URL, path, publication, topic_type, last_updated, and a snippet.

Parameter

Type

Required

Default

Notes

query

string

yes

Plain query ANDs all terms; hyphens/colons are quoted for you.

limit

number

no

5

1–25.

raw

boolean

no

false

Pass the query as literal FTS5 syntax (OR, NOT, "phrases", prefix*).

docs_get

Fetch one indexed doc in full (frontmatter fields + body) by its repo-relative path from a docs_search hit.

Parameter

Type

Required

Default

Notes

path

string

yes

e.g. markdown/<publication>/<file>.md.

docs_reindex

Rebuild the index by running build_index.py against a local ServiceNowDocs checkout, then reopen the DB so searches use the fresh index. Takes minutes (~46k files). Needs SN_DOCS_REPOnot available in the baked container image (it ships one release's index and drops the markdown tree).

Parameter

Type

Required

Default

Notes

branch

string

no

checkout's git branch

Only stamps citation URLs. It does not switch release — git checkout the branch in the ServiceNowDocs repo first, then reindex.

Incident (src/tools/incident.ts, 6 tools)

assigned_to/assignment_group/caller_id accept a username, email, or sys_id, written as display values. resolve_incident's resolution_code is a choice field — verified against sys_choice on this PDI rather than guessed (see project memory for the confirmed value list).

Tool

Description

create_incident

Create a new incident.

update_incident

Update an existing incident (accepts sys_id or incident number).

add_comment

Add a comment or work note to an incident.

resolve_incident

Resolve an incident (sets state to Resolved with a resolution code and notes).

list_incidents

List incidents, most recent first. One bounded page per call, not the full table.

get_incident_by_number

Fetch a single incident by its number (e.g. INC0010001).

User & Group (src/tools/user.ts, 9 tools)

user_id/group_id accept a raw sys_id, username/email, or group name. Group-membership adds dedupe against existing rows before inserting (a deliberate improvement over the reference, which doesn't).

Tool

Description

create_user

Create a new user.

update_user

Update an existing user (accepts sys_id, username, or email).

get_user

Fetch a single user by sys_id, username, or email.

list_users

List users, most recent first. One bounded page per call.

create_group

Create a new group, optionally with initial members.

update_group

Update an existing group (accepts sys_id or name).

add_group_members

Add one or more members to a group.

remove_group_members

Remove one or more members from a group.

list_groups

List groups. One bounded page per call.

Catalog (src/tools/catalog.ts + catalog-variables.ts + catalog-optimization.ts, 11 tools)

get_optimization_recommendations is partially simulated: low_usage/high_abandonment/ slow_fulfillment are randomly fabricated (no real usage-tracking data source exists on this PDI, matching the reference project's own use of Python's random), while inactive_items/description_quality reflect real instance data — the whole response is still labeled simulated: true rather than splitting the labeling per-type, a deliberate choice. Never present this tool's output as real analysis.

Tool

Description

list_catalog_items

List service catalog items. One bounded page per call.

get_catalog_item

Fetch a single catalog item by sys_id, including its variables (form fields).

list_catalog_categories

List service catalog categories. One bounded page per call.

create_catalog_category

Create a new service catalog category.

update_catalog_category

Update an existing service catalog category.

move_catalog_items

Move one or more catalog items to a different category.

create_catalog_item_variable

Create a new variable (form field) on a catalog item.

list_catalog_item_variables

List the variables (form fields) defined on a catalog item.

update_catalog_item_variable

Update an existing catalog item variable.

get_optimization_recommendations

SIMULATED optimization recommendations — see note above.

update_catalog_item

Update an existing catalog item's core fields.

Change & Changeset (src/tools/change.ts + changeset.ts, 15 tools)

Known platform gaps on this PDI (not porting bugs — confirmed empirically, documented in each tool's own MCP description): submit_change_for_approval/approve_change/reject_change's state transitions are blocked by a Change Model business rule, and sysapproval_approver.document_id doesn't persist via direct write — approval records are meant to come from ServiceNow's own Approval Engine. add_file_to_changeset is blocked by ACL on sys_update_xml. publish_changeset's "published" state doesn't exist as a sys_update_set choice on this PDI (silently no-ops rather than erroring). All four tools are still implemented as faithful ports — the gaps are platform behavior, not something this project codes around.

Tool

Description

create_change_request

Create a new change request.

update_change_request

Update an existing change request (accepts sys_id or change number).

list_change_requests

List change requests. One bounded page per call.

get_change_request_details

Fetch a single change request with its associated change tasks.

add_change_task

Add a task to a change request.

submit_change_for_approval

Submit for approval. NOTE: may fail — see gaps above.

approve_change

Approve a pending approval record and move to Implement. NOTE: may fail — see gaps above.

reject_change

Reject a pending approval record and cancel the change. NOTE: may fail — see gaps above.

list_changesets

List changesets (update sets). One bounded page per call.

get_changeset_details

Fetch a single changeset with the changes it contains.

create_changeset

Create a new changeset.

update_changeset

Update an existing changeset (accepts sys_id or name).

commit_changeset

Commit a changeset (sets state to complete).

publish_changeset

Publish a changeset. NOTE: may silently no-op — see gaps above.

add_file_to_changeset

Add a file to a changeset. NOTE: often ACL-blocked — see gaps above.

Knowledge Base (src/tools/knowledge-base.ts, 9 tools)

publish_article's direct workflow_state write silently reverts to draft on this PDI — modern instances drive publish through Flow Designer (kb_publish_flow), not a bare Table API write; documented in the tool's own description rather than fixed, since resolving the flow is out of scope. kb_category/ kb_knowledge_base block direct deletes via ACL even for this admin-scoped account — no cleanup path exists through the Table API for those two tables.

Tool

Description

create_knowledge_base

Create a new knowledge base.

list_knowledge_bases

List knowledge bases. One bounded page per call.

create_category

Create a new category in a knowledge base.

create_article

Create a new knowledge article.

update_article

Update an existing knowledge article.

publish_article

Change an article's workflow state. NOTE: silently reverts to draft — see note above.

list_articles

List knowledge articles. One bounded page per call.

get_article

Fetch a single knowledge article by sys_id.

list_categories

List knowledge base categories. One bounded page per call.

Story, Scrum Task & Project (src/tools/story.ts + scrum-task.ts + project.ts, 12 tools)

Epic tools and story.epic/story.project/scrum_task.type params dropped — see the top-of-file gap list. percent_complete on the project tools is renamed from the reference's percentage_complete (a genuine bug in the reference — that name doesn't match the real pm_project column).

Tool

Description

create_story

Create a new story.

update_story

Update an existing story (accepts sys_id or story number).

list_stories

List stories. One bounded page per call.

list_story_dependencies

List dependencies between stories.

create_story_dependency

Create a dependency between two stories.

delete_story_dependency

Delete a story dependency record.

create_scrum_task

Create a new scrum task under a story.

update_scrum_task

Update an existing scrum task (accepts sys_id or scrum task number).

list_scrum_tasks

List scrum tasks. One bounded page per call.

create_project

Create a new project.

update_project

Update an existing project (accepts sys_id or project number).

list_projects

List projects. One bounded page per call.

Script Include (src/tools/script-include.ts, 5 tools)

Highest-care domain in this projectscript is live, executable server-side JavaScript. Never write code from an untrusted source through these tools. script_include_id accepts a name, or a sys_id prefixed with sys_id: to bypass name lookup.

Tool

Description

list_script_includes

List script includes (metadata only, not script bodies). One bounded page per call.

get_script_include

Fetch a single script include, including its full script body.

create_script_include

Create a new script include. WARNING: live executable code.

update_script_include

Update an existing script include. WARNING: live executable code.

delete_script_include

Delete a script include.

Workflow (src/tools/workflow.ts, 9 tools)

Classic Workflow — legacy, superseded by Flow Designer on modern instances. Confirmed live and queryable on this PDI before porting. activate_workflow/deactivate_workflow/reorder_workflow_activities are not ported — see the top-of-file gap list. add_workflow_activity's activity_type resolves by name against wf_activity_definition (the real reference field), not a flat string as the reference project assumes. Known reference-project gap, ported as-is: add_workflow_activity requires a real workflow_version_id that no tool in this domain creates — create_workflow makes an empty wf_workflow row with no version; get one via list_workflow_versions against a pre-existing workflow, or create one directly via the Table API (not exposed as a tool here, matching the reference's own scope).

Tool

Description

list_workflows

List classic Workflow definitions. One bounded page per call.

get_workflow_details

Fetch a single workflow definition, optionally including its versions.

list_workflow_versions

List the versions of a workflow.

get_workflow_activities

Fetch activities for a workflow version, defaulting to the latest published version.

create_workflow

Create a new (empty) workflow definition.

update_workflow

Update an existing workflow definition (accepts name or sys_id).

add_workflow_activity

Add an activity to a workflow version. See gap note above.

update_workflow_activity

Update an existing workflow activity's name or extra fields.

delete_workflow_activity

Delete a workflow activity.

1. Provision a ServiceNow service account (manual, one-time)

Do this in the PDI (https://dev203275.service-now.com), logged in as an admin:

  1. User Administration → Users → New

    • User ID: claude_mcp_readonly

    • Set a password, uncheck "Password needs reset"

    • Check "Web service access only"required. Without it, ServiceNow's SNCRestrictBasicAuthUserAuthenticationGate blocks Basic Auth over REST for this account even with a correct password, because the account is also permitted interactive UI login. Symptom if missed: every REST call 401s with "User is not authenticated" while logging into the UI with the same credentials works fine. See Troubleshooting.

  2. On that user record → Roles related list → Edit → add roles for whichever tools you actually need (see below).

  3. Copy .env.example to .env and fill in SN_USER / SN_PASS with this new account.

Role scope has changed since the original 2-tool build. The account was originally intentionally read-only (rest_api_explorer plus read access to syslog/sys_update_xml/sys_update_set). Once the full read/write port (82 reference tools → 76 shipped) was added, the user explicitly decided to elevate this same accountclaude_mcp_readonly — with write roles rather than create a second dedicated write account or reuse the separate admin claude_automation account (see project memory for the full decision record). On this PDI, claude_mcp_readonly ended up carrying user_admin and admin — turned out to already be present on this instance's default service-account role set, not something granted incrementally batch-by-batch as the original plan assumed (confirmed via sys_user_has_role before each batch, only surfaced to the user when a real 403 actually occurred). If provisioning this fresh on a new instance: don't assume a broad role set will already be there — start read-only per the original steps above if you only want the 2 report tools; grant roles per domain as each write tool is actually needed (the account name stays misleading either way — renaming a live ServiceNow username is more hassle than it's worth). Script include writes in particular are effectively code-execution capability and deserve the most scrutiny of any grant in this project — see the Script Include tools section above.

2. Build

cd C:\Users\willr\projects\sn-mcp
npm install
npm run build

3. Verify credentials before wiring into a client

$env:SN_INSTANCE="https://dev203275.service-now.com"; $env:SN_USER="claude_mcp_readonly"; $env:SN_PASS="<password>"
node -e "fetch(process.env.SN_INSTANCE+'/api/now/table/sys_user?sysparm_limit=1',{headers:{Authorization:'Basic '+Buffer.from(process.env.SN_USER+':'+process.env.SN_PASS).toString('base64')}}).then(r=>console.log(r.status))"

Should print 200. If 401, check the password; if 403, the role doesn't cover that table yet.

4. syslog table name, level values, and date filtering (resolved)

Confirmed against this instance on 2026-08-26:

  • The table is syslog, not sys_log (sys_log returns 400 Invalid table sys_log).

  • syslog.level is numeric, not the strings "warning"/"error": -2=Trace, -1=Debug, 0=Information, 1=Warning, 2=Error, 3=Fatal (confirmed via GET /api/now/table/sys_choice?sysparm_query=name=syslog^element=level).

  • The date-range filter must use plain literal datetimes ('<date> 00:00:00'@'<date> 23:59:59'), not javascript:gs.dateGenerate(...) — see Troubleshooting for why the latter silently shifted results onto the wrong day.

src/tools/syslog.ts maps friendly level names ("warning", "error", etc.) to these codes internally, so callers can keep passing names — this only matters if you extend the tool or point it at a different instance, where the mapping should be re-verified with the same sys_choice query.

5. Register with Claude Code CLI

claude mcp add --scope user sn-mcp -- "C:\Program Files\nodejs\node.exe" C:\Users\willr\projects\sn-mcp\dist\index.js

Use the absolute path to node.exe, not bare node — a Claude Code session started before Node was on PATH won't be able to resolve a bare node command when spawning the server (claude mcp list will show CONNECTION_CLOSED). Verify with claude mcp list.

Claude Code CLI reads SN_INSTANCE/SN_USER/SN_PASS from .env in this project folder — no extra env config is needed on the CLI side as long as .env exists here. This relies on src/index.ts resolving .env's path relative to the compiled script itself (import.meta.url), not process.cwd() — plain import "dotenv/config" would fail, because Claude Code spawns this server from an unrelated working directory. See Troubleshooting if .env ever seems to stop loading.

6. Register with Claude Desktop

Add to %APPDATA%\Claude\claude_desktop_config.json (created fresh — didn't exist on this machine):

{
  "mcpServers": {
    "sn-mcp": {
      "command": "C:\\Program Files\\nodejs\\node.exe",
      "args": ["C:\\Users\\willr\\projects\\sn-mcp\\dist\\index.js"],
      "env": {
        "SN_INSTANCE": "https://dev203275.service-now.com",
        "SN_USER": "claude_mcp_readonly",
        "SN_PASS": "<password>"
      }
    }
  }
}

Desktop launches the server as its own process without inheriting this project's .env, so credentials are repeated here explicitly. Restart Claude Desktop after editing, then check the 🔌 connector icon to confirm it connected.

7. Optional: remote-reachable HTTP transport

Steps 5–6 use stdio, which only works for a client that can spawn a local process (Claude Code, Claude Desktop). A client that can't — e.g. claude.ai's hosted Scheduled Tasks — needs an HTTP endpoint instead. src/http.ts exposes the same two tools over MCP's Streamable HTTP transport at POST/GET /mcp.

npm run build
$env:MCP_HTTP_TOKEN="<pick something random>"; npm run start:http

Defaults: binds 127.0.0.1:3535 (override with MCP_HTTP_HOST / MCP_HTTP_PORT in .env). If MCP_HTTP_TOKEN is set, every request must send Authorization: Bearer <token> or gets 401; if unset, the server logs a warning and accepts unauthenticated requests — fine while bound to localhost only, not fine if this ever sits behind a public tunnel. createMcpExpressApp() (from the SDK) also enables DNS-rebinding protection automatically whenever bound to a localhost host.

To actually reach this from claude.ai's hosted Scheduled Tasks, 127.0.0.1 isn't enough — it needs a public URL (e.g. a tunnel: ngrok http 3535, or a real deployment). That's a separate step, not done here; this just adds the capability. Smoke test locally first:

curl.exe -s -X POST http://127.0.0.1:3535/mcp -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -H "Authorization: Bearer $env:MCP_HTTP_TOKEN" -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"smoketest","version":"0.0.1"}}}'

Should return 200 with a mcp-session-id response header and a JSON-RPC result body.

Troubleshooting

  • 401 on every REST call despite a correct password, but logging into the ServiceNow UI with the same credentials works — this is SNCRestrictBasicAuthUserAuthenticationGate: it blocks Basic Auth over REST for accounts that can also log in interactively. Fix: check "Web service access only" on the user record (step 1). Don't waste time resetting the password again — that pattern (UI login OK, REST 401, "User is not authenticated" / "Required to provide Auth information") is this gate, not a bad credential. Diagnosable directly from System Logs (/syslog_list.do, filter for the account name).

  • Invalid table sys_log (HTTP 400) — the table is syslog, no underscore.

  • Report comes back empty even though logs exist for that daylevel is numeric on this instance (see step 4), not the strings "warning"/"error". Re-check the mapping via the sys_choice query if pointing this at a different instance.

  • Missing SN_INSTANCE, SN_USER, or SN_PASS environment variables" when launched as a real MCP server, even though .env exists and a direct node dist/index.js test from this folder works fine — that direct test succeeds because its process.cwd() happens to be the project folder; Claude Code launches the server from elsewhere, so plain dotenv/config fails silently. Confirm src/index.ts resolves .env via import.meta.url, not cwd (see step 5). Always verify with a real MCP tool call, not just a direct script run — the two can disagree.

  • get_syslog_report silently returns the wrong day / is missing several hours — was a real bug, found 2026-08-26 via a spot-check comparison against echelon-ai-labs/servicenow-mcp's query patterns. src/tools/syslog.ts used to build the date filter with sys_created_onBETWEENjavascript:gs.dateGenerate('<date>','00:00:00')@javascript:gs.dateGenerate(...). gs.dateGenerate() evaluates in the instance's configured timezone, but sys_created_on comes back as a raw UTC value over the Table API — so the window was silently offset by the instance's UTC delta (~7h on this PDI), pulling in the tail of the wrong day and missing early hours of the right one. Fixed by dropping the javascript:gs.dateGenerate(...) wrapper entirely and passing plain literal '<date> 00:00:00'@'<date> 23:59:59' strings, which compare directly against the raw stored value with no timezone conversion. Verified: 834 rows across all 24 hours for 2026-08-25, vs. 366 rows across 17 hours before the fix. If this instance's timezone config ever changes, re-verify with the same full-hour-coverage check (see step 4-style spot check) rather than assuming.

  • CONNECTION_CLOSED in claude mcp list — the CLI session started before Node.js was on PATH. Register with node.exe's absolute path (already done in step 5) or start a fresh session.

  • Edited the code, rebuilt, but behavior didn't change — an already-running Claude Code session keeps the old dist/ loaded over its stdio connection. Run /mcp in that session to reconnect; no restart needed.

Files

  • src/servicenow-client.ts — Table API wrapper (Basic Auth): queryTable/getRecord/createRecord/ updateRecord/deleteRecord, plus queryTableAll, the "fetch everything up to a safety cap" pagination loop the two report tools use (1000 rows/page, 10,000-row safety cap, returns { rows, truncated }) — not used by any list_* tool, which paginate one caller-controlled page at a time via plain queryTable. Swap Basic Auth for OAuth here later if moving off the PDI.

  • src/register-tool.tsregisterTool()/jsonResult(): shared response framing (JSON content block, prepends a ⚠ Truncated note when a result carries {truncated: true}) so every domain file doesn't hand-roll it.

  • src/tools/shared.ts — cross-domain helpers: resolveUserSysId/resolveRoleSysId/resolveGroupSysId/ assignRoleToUser (user/group/role lookups, reused by user.ts and beyond) and buildTimeframeQuery (the upcoming/in-progress/completed filter shared by change.ts/story.ts/scrum-task.ts/ project.ts — deliberately built from a literal UTC timestamp, not javascript:gs.now(), to avoid the timezone bug class described in Troubleshooting below).

  • src/tools/syslog.ts, src/tools/dev-work-report.ts — the two original report queries.

  • src/tools/incident.ts, user.ts, catalog.ts, catalog-variables.ts, catalog-optimization.ts, change.ts, changeset.ts, knowledge-base.ts, story.ts, scrum-task.ts, project.ts, script-include.ts, workflow.ts — the 76 ported tools, one file per reference domain; see the Tools section above for what's in each and project memory for the batch-by-batch build history.

  • src/create-server.ts — builds an McpServer and registers all 78 tools, grouped by domain with a comment header per section; shared by both entrypoints below.

  • src/index.ts — stdio entrypoint (Claude Code/Desktop); resolves .env relative to itself (not cwd).

  • src/http.ts — Streamable HTTP entrypoint (step 7); bearer-token auth, one server+transport per session.

Available Tools

52 tools
add_change_taskC

Add a task to a change request.

ParametersJSON Schema
NameRequiredDescriptionDefault
change_idYessys_id or change number
assigned_toNoUsername, email, or sys_id
descriptionNo
planned_end_dateNoYYYY-MM-DD HH:MM:SS
short_descriptionYes
planned_start_dateNoYYYY-MM-DD HH:MM:SS

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Add a task' implies mutation but the description discloses nothing about validation behavior (e.g., what happens if the change_id doesn't exist), authorization requirements, or whether the change request itself is modified. Minimal disclosure relative to an un-annotated 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that names the action with zero filler words. It earns its place. Not a 5 because for a 6-parameter mutation tool the brevity crosses into under-specification.

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

Completeness2/5

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

This is a 6-parameter mutation tool with no annotations and no output schema, yet the description is only 7 words. It omits return values, validation/error behavior, task semantics, and any prerequisites. Insufficient for an agent to call it correctly in full context.

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

Parameters2/5

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

Schema description coverage is 67% (4 of 6 parameters documented). The description adds zero parameter meaning and does not compensate for the two undocumented parameters (description, short_description), which remain unexplained in both places. At moderate coverage the description provides no additional value beyond the schema.

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

Purpose4/5

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

The description 'Add a task to a change request' states a specific verb (add), resource (task), and target (change request). It distinguishes from siblings like create_change_request and add_comment because the resource and destination object are explicit. It's not a 5 because it doesn't explicitly position itself against the other change-management tools, 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.

Usage Guidelines2/5

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. No mention of prerequisites, exclusions, or how this differs from update_change_request, add_comment, or other change-related siblings. The agent must infer the appropriate call context 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.

add_commentB

Add a comment or work note to an incident.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentYes
incident_idYessys_id or incident number
is_work_noteNotrue = internal work note, false = customer-visible comment (default)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that it adds a comment or work note, but doesn't mention permissions, reversibility, side effects on the incident, or what the response looks like. Minimal behavioral info.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear sentence that is front-loaded with the action and resource. No wasted words or irrelevant details.

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

Completeness2/5

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

For a mutation tool with 3 parameters and no output schema, the description is incomplete. It doesn't explain the difference between comment and work note in practice, any prerequisites, or expected return values. An agent would need to guess about these aspects.

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

Parameters2/5

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

Schema description coverage is 67% (incident_id and is_work_note are documented, comment is not). The tool description adds no parameter meaning beyond the schema. The comment parameter remains undocumented, and the description does not compensate for that gap.

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

Purpose5/5

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

The description clearly states the verb 'Add' and the resource 'comment or work note to an incident', which is specific and distinct from sibling tools like resolve_incident or update_incident. It distinguishes the two modes (comment vs work note) which is helpful.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus other incident-related tools, nor does it indicate when to use a comment versus a work note. This is left entirely to the agent's inference from the parameter descriptions.

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

add_file_to_changesetB

Add a file (sys_update_xml record) to a changeset. NOTE: sys_update_xml often blocks direct inserts via ACL (confirmed on this PDI) since it normally holds system-generated content.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
changeset_idYessys_id or name of the changeset
file_contentYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It discloses a known failure mode (ACL blocking on sys_update_xml inserts), which is valuable. However, it does not describe the success behavior, return value, side effects, or permissions required beyond that caution, leaving significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero fluff. The core action and record type are front-loaded, and the critical ACL warning is concise and useful. Every word earns its place, making it a model of efficient phrasing.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information about what the tool returns, how to format the file content, what constitutes a valid file_path, and any additional restrictions beyond the ACL note. An agent would have to guess or experiment to use it correctly, which is inadequate given the tool's complexity.

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

Parameters2/5

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

Schema description coverage is only 33% (only changeset_id is described). The description does not explain file_path or file_content semantics at all, nor does it add detail about the changeset_id. The phrase 'Add a file' implies the parameters but provides no format, constraints, or examples. The description fails to compensate for the low schema coverage.

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

Purpose4/5

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

The description clearly states the action: add a file (a sys_update_xml record) to a changeset. It specifies the resource and the specific record type, making the tool's function distinct from similar sibling tools like update_changeset or commit_changeset. However, it does not explicitly name alternatives or draw a contrast, 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.

Usage Guidelines2/5

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. It does not mention any prerequisites or situations where this tool is preferred. The note about ACL blocking is a caution, not a usage guideline, and does not help an agent decide between this and other changeset-related tools.

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

add_group_membersA

Add one or more members to a group.

ParametersJSON Schema
NameRequiredDescriptionDefault
membersYesUsernames, emails, or sys_id:<id>-prefixed sys_ids
group_idYesGroup name or sys_id

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Add one or more members' without explaining side effects such as handling of duplicates, nonexistent groups, or idempotency. It also omits any mention of return values or error conditions, which is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the action and contains no filler. Every word earns its place, making it highly efficient.

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

Completeness3/5

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

For a simple two-parameter mutation, the description is minimally adequate. However, it lacks any mention of return values, error handling, or prerequisites such as group existence. Since there is no output schema, the description should at least hint at expected outcomes, which it does not.

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

Parameters3/5

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

The schema descriptions cover both parameters fully (100% coverage), so the tool description adds no additional parameter information. The baseline of 3 applies because the schema already documents the accepted formats and meanings.

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

Purpose5/5

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

The description 'Add one or more members to a group' uses a specific verb and resource, clearly distinguishing it from the sibling remove_group_members. The intent is unambiguous and directly states the action performed.

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

Usage Guidelines4/5

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

The description clearly indicates the use case (adding members to a group) but does not explicitly mention when not to use it or list alternatives like remove_group_members. Context is sufficient, but exclusions are not stated.

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

approve_changeA

Approve a change request's pending approval record and move the change to Implement. NOTE: may fail on instances with Change Model governance — confirmed on this PDI.

ParametersJSON Schema
NameRequiredDescriptionDefault
change_idYessys_id or change number
approver_idNoUsername, email, or sys_id of the approver
approval_commentsNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses the side effect (moving to Implement) and a known failure condition (Change Model governance), which is useful. However, it does not mention permissions, reversibility, or what happens if the approval is already processed, leaving gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The primary action is front-loaded, and the critical failure note is appended succinctly. Every word earns its place.

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

Completeness4/5

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

For a simple tool with three parameters and no output schema, the description covers the core action and a key risk. It could be more explicit about prerequisites (e.g., change must be in pending approval status) but the 'pending approval record' phrasing implies this condition. Overall, it is mostly complete.

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

Parameters3/5

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

Schema description coverage is 67% (change_id and approver_id have descriptions; approval_comments does not). The description does not add any parameter-specific meaning beyond the schema, so it sits at the baseline for moderate coverage.

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

Purpose5/5

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

The description states a specific verb ('Approve') and resource ('a change request's pending approval record') and includes the outcome ('move the change to Implement'). This clearly distinguishes it from siblings like reject_change (opposite action) and submit_change_for_approval (submission step).

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

Usage Guidelines3/5

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

The description implies the use case (approving a pending approval) but does not explicitly contrast with alternatives such as reject_change or explain when to avoid this tool. The governance failure note is a caution, not a usage guideline, and no exclusions are provided.

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

commit_changesetC

Commit a changeset (sets state to complete).

ParametersJSON Schema
NameRequiredDescriptionDefault
changeset_idYessys_id or name of the changeset
commit_messageNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that the operation sets state to complete, which is a key side effect, but it does not mention whether the operation is destructive, requires approval, is reversible, or has any other consequences. For a finalizing action, this is minimal and incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff, front-loading the action and outcome. It is efficiently structured, though it is so brief that it borders on under-specification. Still, the conciseness itself is appropriate; the issue lies in missing content rather than unnecessary content.

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

Completeness2/5

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

Given the existence of publish_changeset and update_changeset as siblings, the description lacks enough context to distinguish when to commit vs. publish or update. It also doesn't mention return values or side effects beyond the state change. For a tool with side effects and no annotations, this is incomplete for an agent to use confidently.

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

Parameters2/5

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

The schema description coverage is only 50% (changeset_id has a description, commit_message does not). The tool description adds no parameter-level meaning and does not compensate for the missing documentation of commit_message. An agent would not know what commit_message is for or whether it is required or optional from the description.

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

Purpose4/5

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

The description clearly states the verb 'Commit' and resource 'changeset', and adds a parenthetical that it sets state to complete, which provides a specific outcome. While it doesn't explicitly differentiate from publish_changeset or update_changeset, the state-change detail gives a clear functional identity. Not a tautology; it adds meaningful information.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the closely related publish_changeset or update_changeset. The description does not mention prerequisites, conditions, or alternatives. The agent is left to infer usage context from the name alone, which is insufficient.

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

create_articleC

Create a new knowledge article.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesMain body, HTML or wiki markup depending on article_type
titleYesTitle of the article — always wins over short_description if both are given, matching the reference project's own behavior
categoryYesCategory title or sys_id
keywordsNo
article_typeNoHTML or WikiHTML
knowledge_baseYesKnowledge base title or sys_id
short_descriptionYes

TDQS

C2.2/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Create a new knowledge article' and reveals nothing about side effects, required permissions, or what counts as a successful creation. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise in length but severely under-specified. It omits essential context, making it an under-specification rather than a model of conciseness.

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

Completeness1/5

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

With 7 parameters (5 required), no output schema, and no annotations, the description is far too minimal. An agent cannot infer what constitutes a valid article, what fields are required beyond the schema, or what to expect in response.

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

Parameters2/5

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

Schema description coverage is 71%, partially documenting parameters like title, text, category, article_type, and knowledge_base, but keywords and short_description remain undocumented. The description adds no additional meaning about parameters, so it does not compensate for the coverage gap.

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

Purpose4/5

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

The description 'Create a new knowledge article' states a specific verb and resource, making the core purpose clear. However, it does not differentiate from sibling tools like update_article or publish_article, so it lacks explicit distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, conditions, or when not to use it, 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.

create_catalog_categoryC

Create a new service catalog category.

ParametersJSON Schema
NameRequiredDescriptionDefault
iconNo
orderNo
titleYes
activeNo
parentNoParent category title or sys_id
descriptionNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description must disclose all behavioral traits. It only states that a category is created, implying mutation but giving no details on side effects, permissions, idempotency, or return behavior. This is inadequate for a create operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no fluff. It is appropriately brief, though the brevity borders on under-specification rather than effective conciseness.

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

Completeness1/5

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

For a tool with 6 parameters, no output schema, and no annotations, this description is severely incomplete. It provides no information on return values, required fields beyond what the schema already shows, or any operational context needed to correctly invoke the tool.

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

Parameters1/5

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

Schema coverage is only 17% (only 'parent' has a description), yet the description adds no parameter information whatsoever. It does not compensate for the five undocumented parameters, leaving the agent without meaning for title, icon, order, active, or description beyond their types.

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

Purpose4/5

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

The description 'Create a new service catalog category' clearly states a specific verb (create) and resource (service catalog category). It is distinguishable from the sibling 'create_category' by the explicit 'service catalog' qualifier, though it does not actively contrast itself against that similar tool.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'create_category' or other create operations. There is no mention of 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.

create_catalog_item_variableC

Create a new variable (form field) on a catalog item.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxNo
minNo
nameYesInternal name of the variable
typeYesVariable type, e.g. string, integer, boolean, reference
labelYesDisplay label (question text)
orderNo
help_textNo
mandatoryNo
max_lengthNo
descriptionNo
default_valueNo
catalog_item_idYessys_id or name of the catalog item
reference_tableNoFor reference-type variables, the table to reference
reference_qualifierNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description should disclose behavioral traits such as mutating effects, potential errors, or validation requirements. The description only states the action without any behavioral details. It does not mention permissions, idempotency, or consequences. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that succinctly states the tool's purpose with no fluff. It is front-loaded with the primary action and resource. However, it is perhaps too terse given the tool's complexity, though conciseness itself is not penalized.

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

Completeness2/5

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

For a tool with 14 parameters, no output schema, and no annotations, the description is severely incomplete. It lacks information about how to use the tool effectively, what the expected inputs are, or what happens after creation. The description provides no context beyond the basic purpose, which is insufficient for an agent to call this tool correctly without additional inference.

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

Parameters2/5

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

The description does not elaborate on any parameters. The input schema has only 36% description coverage, leaving many parameters (max, min, order, help_text, mandatory, max_length, default_value, reference_qualifier) undocumented. The description does not compensate for this gap, providing no guidance on required vs optional fields or relationships between parameters.

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

Purpose4/5

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

The description clearly states the action (create) and the resource (a new variable/form field on a catalog item). While it doesn't explicitly name sibling tools, the verb and object differentiate it from list/update operations. 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.

Usage Guidelines3/5

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

The description implies the tool is for adding new variables, but provides no explicit guidance on when to choose this over update_catalog_item_variable or list_catalog_item_variables. No alternative tools are mentioned, and no conditions are given. Usage is only implied by the word 'Create'.

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

create_categoryB

Create a new category in a knowledge base.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
activeNo
descriptionNo
parent_tableNoTable name where the parent category is defined
knowledge_baseYesKnowledge base title or sys_id
parent_categoryNoParent category title or sys_id, for a subcategory

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden of behavioral disclosure. It only states the action without mentioning side effects, permissions, uniqueness constraints, or response behavior. For a mutation tool, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at one sentence, which is efficient. However, it is under-specified rather than concise in a valuable way—it could include a brief note on parameters or usage. Still, it has no fluff.

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

Completeness2/5

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

Given the tool has 6 parameters, no output schema, and no annotations, the description is too sparse. An agent would not know what the tool returns (e.g., created category details), how errors are handled, or the difference from catalog categories. Additional context is needed for correct invocation.

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

Parameters2/5

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

Schema description coverage is only 50%, and the description adds no parameter-level meaning beyond the schema. Three parameters (title, active, description) are undocumented in the schema, and the description does not help clarify them. It fails to compensate for the coverage gap.

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

Purpose5/5

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

The description clearly states the verb 'Create' and the resource 'a new category in a knowledge base', which distinguishes it from siblings like create_catalog_category and create_knowledge_base. 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.

Usage Guidelines3/5

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

The description implies the tool is for creating categories within a knowledge base context, which is clear enough. However, it does not explicitly mention when to use this tool versus the similar create_catalog_category, nor any exclusions or prerequisites. Some guidance on distinguishing from catalog categories would improve it.

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

create_change_requestC

Create a new change request.

ParametersJSON Schema
NameRequiredDescriptionDefault
riskNo
typeYesnormal, standard, emergency, or model
impactNo
categoryNo
end_dateNoYYYY-MM-DD HH:MM:SS
start_dateNoYYYY-MM-DD HH:MM:SS
descriptionNo
requested_byNoUsername, email, or sys_id
assignment_groupNoGroup name or sys_id
short_descriptionYes

TDQS

C2.4/5.0
Behavior1/5

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

With no annotations provided, the description must disclose behavioral traits but does so not at all. It does not mention side effects (e.g., triggering approval workflows, sending notifications), required permissions, or constraints. The single sentence only states the action without any behavioral implications, leaving the agent blind to consequences.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It is appropriately concise in terms of verbosity, but this brevity comes at the cost of missing essential information. Conciseness itself is handled well; the lack of content is penalized under other dimensions.

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

Completeness1/5

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

For a tool with 10 parameters, no output schema, and no annotations, this description is grossly incomplete. It fails to explain what the tool returns, any required fields beyond the schema, or operational context such as whether the change request is immediately effective. An agent cannot call it correctly with only this information.

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

Parameters2/5

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

Schema description coverage is only 50%, so the description must compensate by explaining parameter meanings or usage. It does not. The description adds nothing beyond the schema's own partial descriptions. For example, it does not clarify how risk/impact are used or how to format dates beyond what the schema already provides.

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

Purpose4/5

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

The description states a clear verb (create) and resource (change request), which straightforwardly indicates the tool's purpose. It implicitly differentiates from sibling tools like update_change_request or list_change_requests, though it does not explicitly name them. The purpose is unambiguous but lacks any nuance or scope details.

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

Usage Guidelines2/5

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

The description provides no guidance on when this tool should be used relative to alternatives. There is no mention of prerequisites, typical scenarios, or exclusions (e.g., when to use create_incident instead). An agent must infer usage purely from the tool name, which is insufficient for distinguishing among many creation tools.

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

create_changesetC

Create a new changeset (update set).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
developerNoUsername or sys_id
applicationYesApplication name or sys_id
descriptionNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Create a new changeset,' which is a restatement of the tool's name and adds minimal new information beyond the parenthetical 'update set.' It does not mention permissions required, whether the operation is reversible, what the response contains, or any side effects. For a write operation with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tight sentence with no redundant words. The verb and resource are front-loaded, making it instantly scannable. However, its brevity borders on under-specification—it is concise but lacks valuable context that could be added without much length, so it does not earn the highest score.

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

Completeness2/5

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

For a simple creation tool with no annotations and no output schema, the description leaves agents without essential context. There is no mention of what the tool returns, whether it requires any prerequisites (e.g., an existing application), or how it relates to the change-management workflow (e.g., that it precedes commit/publish). Given the absence of annotations and output schema, the description should carry more explanatory weight than it does.

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

Parameters2/5

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

The schema description coverage is 50% (developer and application have descriptions, but name and description do not). The tool description adds no parameter information whatsoever—it merely restates the action. Since the description does not compensate for the half of parameters that lack schema descriptions, and provides no additional context for any parameter, it falls below the baseline 3 expected for moderate coverage.

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

Purpose5/5

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

The description clearly states the action ('Create') and the resource ('a new changeset'), and even provides a parenthetical clarification that a changeset is an 'update set.' This is specific and unambiguous, and it distinguishes the tool from sibling operations like update_changeset, commit_changeset, and publish_changeset.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It does not mention that this is only for creating new changesets and that update_changeset should be used for modifications, or that commit_changeset follows creation. The description implicitly suggests creation, but an agent gets no explicit routing instructions relative to the many related sibling tools.

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

create_groupC

Create a new group, optionally with initial members.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeNo
emailNo
activeNo
parentNoParent group name or sys_id
managerNoUsername or sys_id of the group manager
membersNoUsernames, emails, or sys_id:<id>-prefixed sys_ids to add as members
descriptionNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only states the obvious creation action and optional member inclusion; it does not mention side effects, permission requirements, duplicate name handling, default values for fields like 'active' or 'type', or the result of the operation. This is minimal 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, but it is under-specified. While it avoids verbosity, the brevity leads to missing critical details about parameters and behavior, making it minimal rather than appropriately concise.

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

Completeness2/5

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

For a creation tool with 8 parameters and no output schema or annotations, the description is notably incomplete. It does not explain the purpose of most parameters, clarify required versus optional fields beyond the schema, or describe the expected response or errors. An agent would lack enough context to call this tool correctly and may need to inspect the schema and guess.

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

Parameters2/5

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

Schema description coverage is only 38% (3 of 8 parameters have descriptions). The tool description adds no explanation for parameters like 'type', 'email', 'active', or 'description', and only implicitly references 'members'. It does not compensate for the low schema coverage, leaving agents without understanding of required or optional fields beyond 'name' being required.

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

Purpose5/5

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

The description clearly states the action ('Create a new group') and the optional ability to include initial members, which distinguishes it from update_group and add_group_members. It is specific, unambiguous, and names the primary resource and operation.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus related siblings such as update_group, add_group_members, or remove_group_members. The description does not mention alternatives or conditions for selecting this tool over others, leaving the agent to infer usage solely from the verb 'create'.

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

create_incidentC

Create a new incident.

ParametersJSON Schema
NameRequiredDescriptionDefault
impactNo
urgencyNo
categoryNo
priorityNo
caller_idNoUsername, email, or sys_id of the caller
assigned_toNoUsername, email, or sys_id
descriptionNo
subcategoryNo
assignment_groupNoGroup name or sys_id
short_descriptionYesShort summary of the incident

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Create a new incident' gives no information about side effects (e.g., whether it triggers notifications, requires specific permissions, or is irreversible), return value, or failure modes. For a mutation tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, making it front-loaded and free of fluff. However, it is under-specified to the point of being minimally informative. It is not overly verbose, but the extreme brevity reduces its usefulness, warranting a middle score rather than a high one.

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

Completeness1/5

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

For a tool with 10 parameters, no output schema, and zero annotations, this description is severely incomplete. The agent has no idea what inputs are essential beyond the one required field, what the response will look like, or what behaviors result from creation. It fails to provide any necessary context for reliable invocation.

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

Parameters2/5

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

Schema coverage is only 40%, with descriptions for only 4 of 10 parameters (caller_id, assigned_to, assignment_group, short_description). The tool description adds nothing about parameter meaning, formats, or relationships. Since schema coverage is low, the description should compensate but fails to, leaving the agent to guess about fields like impact, urgency, and priority.

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

Purpose4/5

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

The description states a clear verb ('Create') and resource ('a new incident'), making it obvious what the tool does. However, it does not differentiate from sibling tools like update_incident or resolve_incident, relying on the tool name's distinctiveness. The verb and resource are specific enough for a 4, but the lack of differentiation prevents a 5.

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

Usage Guidelines2/5

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. No mention of prerequisites (e.g., requiring a user or assignment group), nor when to choose create over update or resolve. The description is a bare imperative with no context for decision-making.

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

create_knowledge_baseD

Create a new knowledge base.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerNoAdmin user or group name
titleYes
managersNoGroup name of users who can manage this knowledge base
descriptionNo
retire_workflowNoKnowledge - Instant Retire
publish_workflowNoKnowledge - Instant Publish

TDQS

D1.5/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only states 'create', which implies mutation, but does not mention side effects, required permissions, potential failures, or what happens on success. The description adds no value beyond the name, failing to inform the agent about the operation's actual behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, but it is under-specified rather than appropriately concise. It omits essential information about parameters and creation semantics, so the brevity is a deficiency, not a strength. There is no front-loading of actionable content.

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

Completeness1/5

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

The tool has 6 parameters, a required field, no output schema, and no annotations. The description provides none of the necessary context—what a knowledge base is, how parameters affect the creation, what the response contains, or any side effects. This is completely inadequate for an agent to correctly invoke the tool.

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

Parameters1/5

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

Schema description coverage is only 33% (owner and managers have descriptions, but title, description, retire_workflow, and publish_workflow do not). The tool description itself mentions no parameters or their meanings, so it does not compensate for the schema's gaps. An agent has no idea what 'title' or 'retire_workflow' represent.

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

Purpose2/5

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

The description 'Create a new knowledge base' is essentially a rephrasing of the tool name 'create_knowledge_base'. It restates the verb and resource without adding any distinguishing information about the knowledge base's purpose or scope, making it a borderline tautology rather than a clear, standalone definition.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., list_knowledge_bases for reading, create_article for content). It lacks any context about prerequisites, conditions, 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.

create_userC

Create a new user.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes
phoneNo
rolesNoRole names to assign after creation
titleNo
activeNo
managerNoUsername or sys_id of the user's manager
locationNo
passwordNo
last_nameYes
user_nameYes
departmentNoDepartment name or sys_id
first_nameYes
mobile_phoneNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, yet it only states the action without mentioning side effects, permissions, or any constraints (e.g., mandatory fields, possible duplicates). This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no redundant information, achieving maximum brevity.

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

Completeness1/5

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

Given the tool has 13 parameters, no output schema, and no annotations, the description is far too minimal. It omits return values, error conditions, and any operational context, making it incomplete for reliable agent use.

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

Parameters2/5

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

Schema description coverage is only 23%, and the tool description adds no parameter information beyond what the schema already provides. Many parameters lack descriptions, and the tool description does not compensate, leaving agents to guess semantics like 'manager' expecting a sys_id or username.

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

Purpose5/5

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

The description clearly states the tool's function—creating a new user—which is distinct from sibling tools like update_user and get_user. 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.

Usage Guidelines2/5

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 over alternatives, such as update_user for existing users, nor any prerequisites like authentication or data requirements. This leaves the agent to infer usage entirely 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.

get_articleB

Fetch a single knowledge article by sys_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYessys_id of the article

TDQS

B3.4/5.0
Behavior2/5

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

Annotations are absent, so the description carries the full burden of behavioral disclosure. 'Fetch' implies a read operation, but it does not state what happens when the sys_id does not exist, whether the result exposes variables/body content, or any other non-obvious behavior. Safety cannot be inferred from structured data here, leaving a gap despite the operation being a simple retrieval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with zero wasted words, fully front-loaded with the subject and intent. Every element earns its place and no filler is present.

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

Completeness4/5

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

For a simple single-fetch tool with one schema-covered parameter and no output schema, the one-liner is largely sufficient. It is missing only marginal details such as the not-found behavior and explicit differentiation from sibling retrieval tools, which keeps it just short of fully complete.

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

Parameters3/5

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

Schema description coverage is 100% — the parameter article_id is already documented as 'sys_id of the article'. The description's mention of 'by sys_id' restates what the schema conveys without adding syntax, constraints, or format details, so it does not meaningfully exceed the baseline it is already given.

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

Purpose5/5

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

'Fetch a single knowledge article by sys_id' names a specific verb (Fetch), a resource (knowledge article), a cardinality (single), and an accessor (sys_id). It clearly distinguishes itself from the sibling list_articles by the 'single' qualifier, so an agent can tell this from list/create/update/publish variants without extra inference.

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

Usage Guidelines2/5

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

No guidance is provided on when to choose this tool over alternatives such as list_articles for multiple articles or get_catalog_item for a different resource type. There are no exclusions, prerequisites, or situational notes, so the agent must infer usage context on its own.

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

get_catalog_itemA

Fetch a single catalog item by sys_id, including its variables (form fields).

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYesCatalog item sys_id

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It clearly indicates a read operation ('Fetch') with no side effects, and specifies the returned data includes variables. While it doesn't disclose error handling or exact return structure, for a simple single-object fetch it is adequately transparent. No contradictions with annotations (none exist).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys the essential action, scope, and included data with no wasted words. It is efficient and easily parsed by an agent.

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

Completeness4/5

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

For a simple single-parameter read tool with high schema coverage and no output schema, the description gives enough context: what it fetches and what is included. It could specify the return format or behavior on missing items, but those are minor gaps given the tool's simplicity. The distinction from sibling variable tools is also clear.

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

Parameters3/5

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

The input schema already fully documents the only parameter 'item_id' with the description 'Catalog item sys_id' (100% coverage). The tool description adds no extra meaning about the parameter beyond what the schema provides, so it meets the baseline of 3 without bonus value.

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

Purpose5/5

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

The description clearly states the verb 'Fetch', the resource ('a single catalog item'), and the distinguishing scope ('by sys_id, including its variables (form fields)'). It differentiates from siblings like list_catalog_items (which lists many) and list_catalog_item_variables (which lists variables separately), 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.

Usage Guidelines4/5

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

The description implies the use case: when you need a complete single catalog item with its variables. It contrasts with list_catalog_items and list_catalog_item_variables by stating the inclusion of variables, giving context for when to select this tool. However, it does not explicitly state when NOT to use it or mention alternatives by name, 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.

get_change_request_detailsB

Fetch a single change request with its associated change tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
change_idYessys_id or change number

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description must disclose behavioral traits. It indicates a read operation ('Fetch') and implies a safe, non-destructive action, but it does not describe edge cases (e.g., what happens if the change_id is invalid) or any limitations. While the description is not misleading, it adds minimal behavioral context beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the action and resource. It is concise with no redundant wording, though it could potentially be more detailed without becoming verbose.

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

Completeness3/5

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

Given the low complexity (one parameter, no output schema), the description is minimally sufficient. It states the tool's output (change request with tasks) but does not cover error scenarios or any special conditions. For a simple getter this is adequate, but it leaves out nothing critical. The lack of an output schema means the description does not need to explain return values.

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

Parameters3/5

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

The input schema already fully documents the single parameter (change_id) as 'sys_id or change number' with 100% coverage. The description adds no additional parameter-specific meaning, so the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action (Fetch) and the resource (single change request) and specifies that it includes associated change tasks. This distinguishes it from list_change_requests which fetches multiple, 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.

Usage Guidelines2/5

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_change_requests or get_changeset_details. There is no mention of preferred contexts, exclusions, or when the list variant should be chosen, leaving the agent to infer usage.

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

get_changeset_detailsA

Fetch a single changeset with the changes (sys_update_xml rows) it contains.

ParametersJSON Schema
NameRequiredDescriptionDefault
changeset_idYessys_id or name of the changeset

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'Fetch' implies a read operation, and the description discloses that it returns the changes (sys_update_xml rows), which is useful behavioral context. However, it does not explicitly state that the operation is read-only, does not mention permissions, error cases, or the full response structure. The description is adequate but not rich in 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action and result. Every word contributes value, with no fluff or redundant phrasing. It is concise without sacrificing the key purpose.

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

Completeness4/5

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

For a simple single-fetch tool with one parameter, the description covers the essential purpose and the inclusion of changes. It does not specify the full return structure, but given the lack of an output schema, it still gives enough for an agent to call it correctly. Minor gaps like error handling and response format do not significantly hinder correct usage.

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

Parameters3/5

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

Schema coverage is 100% — the only parameter changeset_id already has a clear description ('sys_id or name of the changeset'). The tool description adds no additional semantic detail beyond the schema; it does not clarify preferred format, validation, or edge cases. Since the schema covers the parameter fully, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Fetch'), a specific resource ('a single changeset'), and clarifies that it includes the changes as sys_update_xml rows. This clearly distinguishes it from sibling tools like list_changesets (which lists many), update_changeset (which modifies), and commit/publish (which are mutations).

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives. It does not mention that list_changesets is for listing multiple changesets or that update_changeset is for modifications, nor does it state criteria for choosing this tool. The purpose implies it is for retrieving details of a single changeset, but the description leaves this entirely to inference.

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

get_developer_work_reportA

Fetch developer work (sys_update_xml changes) between two dates, grouped by author and update set. Returns structured rows only — the caller (Claude) flags concerns narratively (e.g. changes in the Default update set, unnamed sets, unusually large sets, off-hours activity).

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesEnd date, YYYY-MM-DD
start_dateYesStart date, YYYY-MM-DD

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries full responsibility. It explicitly states the tool returns structured rows only and that the caller flags concerns narratively, clarifying that it does not perform analysis. The 'Fetch' verb implies read-only behavior, but it does not detail error handling or rate limits, so a 4 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both necessary: the first establishes the tool's purpose and grouping; the second clarifies the return behavior and division of responsibility. No wasted words, and the key purpose is front-loaded.

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

Completeness3/5

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

The description omits details about the exact fields in the structured rows. While it indicates grouping by author and update set, it does not specify metrics like change counts or sizes. Since there is no output schema, an agent may not know the shape of the returned rows. The two-parameter simplicity helps, but more detail would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100% with both parameters documented as YYYY-MM-DD dates. The description adds only that they are 'between two dates,' which is redundant. Per rubric, high schema coverage yields a baseline of 3, and the description adds no meaningful new semantics.

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

Purpose5/5

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

The description states a specific verb (fetch), a precise resource (developer work, sys_update_xml changes), a date range, and grouping by author and update set. This clearly distinguishes it from sibling tools like get_syslog_report or get_optimization_recommendations, making its purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies use for analyzing developer work between dates and notes that the caller handles narrative analysis, but it does not explicitly state when to prefer this tool over alternatives (e.g., get_syslog_report) or when not to use it. It provides context but lacks explicit exclusions or comparisons.

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

get_incident_by_numberA

Fetch a single incident by its number (e.g. INC0010001).

ParametersJSON Schema
NameRequiredDescriptionDefault
incident_numberYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It states the operation is a fetch (implying read-only), but does not disclose error behavior (e.g., not-found handling), pagination, or any side effects. It adds minimal behavioral context beyond the name and schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. Every word earns its place, and the example is integrated naturally.

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

Completeness4/5

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

With one simple parameter and no nested objects, and given the tool's name implies the return type (the incident itself), the description is sufficiently complete for correct invocation. It does not explicitly state the return format, but the omitted details are minor for such a straightforward getter.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It provides a concrete example format ('INC0010001'), which adds meaningful guidance beyond the raw schema. It lacks details like validation rules or behavior on invalid input, but for a single required parameter, this is helpful.

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

Purpose5/5

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

The description states a specific verb ('Fetch'), a specific resource ('a single incident'), and the key identifier ('by its number'), with an example format. This clearly distinguishes it from sibling tools like list_incidents (which fetches multiple) and create/update/resolve (which mutate).

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

Usage Guidelines4/5

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

The description implies usage when you have a specific incident number, and the contrast with list_incidents is self-evident. However, it does not explicitly mention when not to use it or name alternative tools, leaving some inference to the agent.

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

get_optimization_recommendationsA

SIMULATED catalog optimization recommendations — low_usage/high_abandonment/slow_fulfillment stats are randomly fabricated (no real usage-tracking data source exists), matching the reference project's own use of Python's random module. inactive_items and description_quality reflect real instance data. Never present this as real analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
category_idNo
recommendation_typesYes

TDQS

A3.8/5.0
Behavior5/5

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

This is a standout disclosure. The description explicitly states that low_usage/high_abandonment/slow_fulfillment stats are randomly fabricated, with no real data source, and warns against presenting it as real analysis. It also clarifies which fields (inactive_items, description_quality) are real. This is critical behavioral transparency beyond any annotations (none provided).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with the critical 'SIMULATED' warning front-loaded. It packs necessary caveats and data-source distinctions without verbosity. The structure is logical: first the simulation warning, then the distinction between real and fabricated fields, then a usage caution.

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

Completeness3/5

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

The description covers the tool's purpose, the simulated nature, and which fields are real. However, it does not describe the return structure (e.g., what format the recommendations take, whether they are per item or aggregated), and there is no output schema to compensate. An agent might not know how to interpret the response. Still, the core context is present, so it's above minimal viability.

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

Parameters3/5

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

The input schema has 2 parameters (category_id optional, recommendation_types required array of enums). The description lists all five enum values in prose (low_usage, high_abandonment, slow_fulfillment, inactive_items, description_quality), which indirectly maps to the recommendation_types parameter. However, it never explicitly mentions the parameter names or explains category_id's role as a filter. With 0% schema coverage, this partial mapping earns a middle score.

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

Purpose4/5

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

The description clearly identifies the resource (catalog optimization recommendations) and the action (get/receive), with a prominent 'SIMULATED' qualifier. It lists the specific types of recommendations offered. It is distinct from sibling tools like get_syslog_report or get_catalog_item, though it doesn't explicitly name a sibling differing from it.

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

Usage Guidelines3/5

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

Usage is implied: the tool provides optimization recommendations for catalog items. However, there is no explicit statement about when to use it versus other reporting tools, nor any conditions like 'use when you need to analyze catalog performance.' The caution about never presenting as real analysis is a usage warning but not a selection criterion.

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

get_syslog_reportA

Fetch sys_log rows (warnings/errors by default) for a given date, defaulting to yesterday. Returns raw rows only — the caller (Claude) does the 'suggested fixes' analysis in conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format. Defaults to yesterday.
levelsNosys_log level values to filter on, e.g. ['warning','error']. Defaults to ['warning','error'] — verify these match this instance's actual level choice values if the report comes back empty unexpectedly.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and meets it well by disclosing the non-obvious trait: it returns raw rows only and intentionally defers 'suggested fixes' analysis to the caller. That is a critical expectation-setting disclosure. It does not cover response format, volume limits, or empty-result behavior, but the disclosed role split is the most important trait for correct invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler; the purpose and defaults are front-loaded, and the role-split note carries real information rather than padding. Lacks any section structure, but for a short description none is needed. Efficient and every sentence earns its place.

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

Completeness4/5

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

For a simple read tool with 0 required params and fully documented schema, the description covers purpose, defaults, filtering, and division of labor. The main omission is the return shape (no output schema exists to cover it), but an agent can call this correctly from what is provided — which is the essential bar.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds little to the date parameter beyond duplicating the yesterday default already in the schema, but it does enrich the levels parameter with a genuine operational tip (verify level choice values against the instance if empty). This modest value-add keeps it at baseline rather than below.

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

Purpose5/5

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

States a specific verb and resource ('Fetch sys_log rows'), then narrows scope with filtering ('warnings/errors by default') and a temporal default (yesterday). The resource is distinct from every sibling (developer work report, optimization recommendations, catalog items), so an agent can pick it unambiguously. This is a fully specified read operation.

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

Usage Guidelines3/5

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

Confers clear context — the tool returns raw rows and the caller performs the analysis — which tells the agent when the tool fits (gathering log evidence) rather than doing reasoning itself. However, no sibling is named for exclusion (e.g., get_optimization_recommendations could plausibly overlap on 'what's wrong'), so when-not-to-use is left implicit.

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

get_userA

Fetch a single user by sys_id, username, or email.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
user_idNosys_id
user_nameNo

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavioral traits, but it only says 'Fetch a single user.' It does not mention authentication requirements, behavior on multiple matches, whether all parameters are mutually exclusive, or what the response looks like. Minimal behavioral insight is given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that conveys the essential purpose without any filler. Every word contributes to clarity.

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

Completeness3/5

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

For a simple read operation with no output schema and no annotations, the description is adequate but leaves gaps: it does not explain error handling (e.g., user not found), behavior when multiple identifiers are given, or whether any identifier is preferred. It covers the basic call pattern but lacks richer context that an agent might need for edge cases.

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

Parameters3/5

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

Schema coverage is only 33% (only user_id has a description). The description adds meaning by explicitly naming the three identifier fields (sys_id, username, email), which compensates for the missing schema descriptions. However, it does not clarify whether parameters can be combined, precedence, or requiredness, so it only partially compensates.

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

Purpose5/5

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

The description states a specific action (Fetch), a clear resource (single user), and the three identification methods (sys_id, username, email). This unambiguously distinguishes it from list_users and other user-related tools.

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

Usage Guidelines4/5

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

The description clearly implies it is for retrieving a single user, but does not explicitly name alternatives or state when not to use it. The context is clear enough for an agent to select it when a single user is needed, though no exclusions are provided.

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

list_articlesA

List knowledge articles. limit/offset paginate — this returns one bounded page, not the full table.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoMatched against short_description or text
offsetNo
categoryNoCategory sys_id
knowledge_baseNoKnowledge base sys_id
workflow_stateNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description bears the full burden of behavioral disclosure. It transparently discloses the pagination behavior (returns one bounded page), which is a key operational trait. It implies a read-only list operation but does not explicitly state safety, side effects, auth, or rate limits. For a simple list tool this is adequate but not rich; the pagination note is the main contribution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the core action ('List knowledge articles') and then adds the critical pagination caveat. There is no wasted wording, and the most important operational detail is placed immediately after the action, making it easy to scan.

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

Completeness3/5

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

With 6 parameters and no output schema, the description gives only the pagination behavior. It does not mention how filters combine, ordering, or any prerequisites for use. Since the schema itself documents query/category/knowledge_base matching, the description is adequate for a straightforward list call but leaves agents to infer behavior for multi-parameter calls. It is not comprehensive but meets a baseline.

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

Parameters3/5

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

Schema coverage is 50% (query, category, and knowledge_base have descriptions; limit, offset, and workflow_state do not). The description explains that limit/offset paginate, clarifying their effect and purpose beyond the schema's default values. However, it does not address workflow_state or other parameters' roles, so it only partially compensates for the coverage gap. The value added is real but limited to pagination context.

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

Purpose4/5

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

The description clearly states the verb 'List' and the resource 'knowledge articles'. While there are sibling list tools for other resources (e.g., list_catalog_categories, list_knowledge_bases), the resource name is distinctive enough to avoid ambiguity. However, it does not explicitly call out that this is the only tool for listing articles, so it misses a chance to differentiate from get_article which fetches a single article.

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

Usage Guidelines3/5

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

The description provides useful usage context by noting that limit/offset paginate and that this returns a bounded page, not the full table. This tells agents to expect pagination and not assume all results come back at once. However, it does not mention alternatives (like get_article for a single article) or when not to use this tool, so guidance on scenario selection is incomplete.

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

list_catalog_categoriesB

List service catalog categories. limit/offset paginate — this returns one bounded page, not the full table.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoMatched against title or description
activeNo
offsetNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden, and it does disclose one meaningful behavioral trait: results are bounded to a single page via limit/offset. However, it omits another behavior visible in the schema — active defaults to true, meaning only active categories are returned unless actively overridden — and the response shape is unspecified. Partial disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler; the purpose is front-loaded and the constraint phrase, 'returns one bounded page, not the full table,' is economically worded and earns its place as a guard against a common mis-assumption.

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

Completeness3/5

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

For a 4-parameter listing tool with no annotations and no output schema, the description covers the core purpose and pagination but leaves out the default active=true filtering behavior and does not clarify query/offset semantics. It's functional but has real gaps for a tool that otherwise carries the full informational burden.

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

Parameters2/5

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

Schema coverage is only 25% (only 'query' has a description), so the description must compensate. It addresses limit/offset through the pagination note, but says nothing about the 'active' boolean filter or the 'query' matching semantics beyond what the schema already states. The description adds only marginal parameter value and fails to fill the coverage gap.

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

Purpose4/5

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

States 'List service catalog categories' with a precise verb and resource, and the 'service catalog' qualifier helps distinguish it from the sibling list_categories (likely knowledge-base categories). It doesn't explicitly name the sibling to differentiate against, but the resource specification is clear enough that an agent can infer scope.

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

Usage Guidelines3/5

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

The description gives useful context about pagination ('this returns one bounded page, not the full table'), which tells agents the tool is meant for paged browsing. It does not name alternatives or state when to prefer a different listing tool, leaving when-to-use vs. siblings 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.

list_catalog_itemsC

List service catalog items. limit/offset paginate — this returns one bounded page, not the full table.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoMatched against short_description or name
activeNo
offsetNo
categoryNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explicitly discloses the pagination trait — 'limit/offset paginate — this returns one bounded page, not the full table' — which is the key behavior for a list operation. However, it omits other meaningful behaviors, such as the fact that 'active' defaults to true (silently excluding inactive items) and the return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core purpose front-loaded. The pagination sentence is nearly redundant ('limit/offset paginate' and 'returns one bounded page, not the full table' restate the same idea), but it is compact and wastes little.

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

Completeness2/5

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

For a 5-parameter, no-annotation, no-output-schema tool, the description is thin. It explains pagination but not the filtering semantics (query, active, category) or the default filtering behavior. With no output schema, the absence of any return-format hint leaves the agent guessing at what fields a page contains.

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

Parameters2/5

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

Schema description coverage is low at 20% (only 'query' is documented in the schema), so the description must compensate. It adds meaning to limit/offset by explaining they paginate the result, but it contributes nothing for 'active' or 'category', which remain completely undocumented in both schema and description. Partial compensation only.

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

Purpose4/5

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

The description states a specific verb and resource ('List service catalog items'), which clearly identifies the operation. The plural 'items' distinguishes it from sibling get_catalog_item, and the resource type separates it from list_catalog_categories or list_incidents. It doesn't explicitly name the alternative, 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.

Usage Guidelines2/5

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 get_catalog_item, update_catalog_item, or the change/users listing siblings. The pagination note ('returns one bounded page, not the full table') describes behavior but does not address tool selection or exclusions. Usage context is only implied by the 'list' verb.

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

list_catalog_item_variablesC

List the variables (form fields) defined on a catalog item.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
catalog_item_idYessys_id or name of the catalog item

TDQS

C2.6/5.0
Behavior2/5

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

Annotations are absent, so the description carries the full burden of disclosing behavior. It does not mention that the operation is read-only, the response format, pagination semantics of limit/offset, error handling, or permission requirements. Only the basic act of listing is stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence that front-loads the key action 'List' and the resource. There is no fluff or redundancy, making it efficient and easy to parse.

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

Completeness1/5

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

For a tool with three parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain what the response contains, how limit/offset affect results, or what happens when the catalog_item_id is invalid. The description alone is insufficient for an agent to call the tool correctly and interpret results.

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

Parameters1/5

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

The description does not reference any parameters. With schema description coverage at only 33% (only catalog_item_id has a description), the description fails to compensate for the undocumented limit and offset parameters. No additional meaning beyond the schema is provided.

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

Purpose4/5

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

The description uses a specific verb ('List') and a specific resource ('variables (form fields) defined on a catalog item'), making the purpose clear. It implicitly distinguishes from sibling tools like create_catalog_item_variable and update_catalog_item_variable by using the 'list' action, but 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.

Usage Guidelines2/5

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

No usage guidance is provided. The description states only what the tool does, with no mention of when to use it versus other tools, prerequisites, or scenarios where it should not be used. Agents receive no routing information.

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

list_categoriesB

List knowledge base categories. limit/offset paginate — this returns one bounded page, not the full table.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoMatched against label or description
activeNo
offsetNo
knowledge_baseNoKnowledge base sys_id
parent_categoryNoParent category sys_id

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does add the pagination behavior ('returns one bounded page, not the full table'), which is valuable and not present in the schema. However, it does not mention the read-only nature, sorting, or error behavior, so it only partially covers behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loaded with the primary purpose and immediately adding the key pagination trait. No wasted words, easily scannable.

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

Completeness2/5

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

The description is too sparse for a 6-parameter tool with no output schema and no annotations. It fails to explain the return format, filter semantics (e.g., how query matches, what active means), or the category hierarchy. While pagination is noted, the overall context remains incomplete for an agent to call it correctly without further inference.

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

Parameters3/5

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

Schema description coverage is 50% (query, knowledge_base, parent_category are described), and limit/offset are not described in the schema. The description adds that limit/offset paginate, giving those parameters meaning, but it does not explain 'active' or the interplay of filters. It partially compensates for the schema gap.

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

Purpose4/5

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

The description clearly states the action ('List') and the resource ('knowledge base categories'), which distinguishes it from the sibling list_catalog_categories by specifying 'knowledge base' implicitly. It is not a tautology, but it does not explicitly name the alternative.

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

Usage Guidelines3/5

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

Usage context is implied by the resource type (knowledge base categories), but the description offers no explicit guidance on when to use this tool versus alternatives like list_catalog_categories or other listing tools. It lacks any 'when not to use' or alternative routing.

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

list_change_requestsC

List change requests. limit/offset paginate — this returns one bounded page, not the full table.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
limitNo
queryNoAdditional raw encoded query, ANDed with the filters above
stateNo
offsetNo
categoryNo
timeframeNo
assignment_groupNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It adds useful pagination context: 'limit/offset paginate — this returns one bounded page, not the full table.' However, it does not mention that this is a read-only operation, the return format, default limit values, or error behavior, leaving significant gaps in 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two short sentences with no filler. The main action is front-loaded, and the pagination caveat is clearly stated. While it is effective in brevity, it omits important context that could be added without sacrificing conciseness.

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

Completeness2/5

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

Given 8 optional parameters, only 13% schema coverage, no output schema, and no annotations, this description is far from complete. It does not explain any filtering parameters, default behavior, or return value structure. An agent would struggle to call this tool correctly beyond basic pagination.

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

Parameters2/5

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

Schema description coverage is only 13% (only the 'query' parameter has a description). The tool description only adds meaning for limit and offset via the pagination note, but does not explain 'type', 'state', 'category', 'timeframe', or 'assignment_group'. Since coverage is low, the description must compensate, and it fails to do so for most parameters.

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

Purpose4/5

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

The description clearly states the action 'List' and the resource 'change requests', making the tool's purpose unambiguous. However, it does not differentiate this list tool from siblings like get_change_request_details or list_incidents, so it earns 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.

Usage Guidelines2/5

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 filters, intended use cases, or when a different tool like get_change_request_details would be more appropriate. This leaves 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_changesetsB

List changesets (update sets). limit/offset paginate — this returns one bounded page, not the full table.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoAdditional raw encoded query, ANDed with the filters above
stateNo
offsetNo
developerNo
timeframeNo
applicationNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral disclosure, and it does add one key behavior: 'limit/offset paginate — this returns one bounded page, not the full table.' This alerts the agent that pagination is required for full results. However, it omits other relevant behaviors such as whether results are sorted, whether filters (state, developer, timeframe, application) combine with AND, and any rate limits or read-only guarantees. A score of 3 reflects that it adds some value but is far from comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero wasted words. The purpose is stated first, and the critical pagination caveat is front-loaded immediately after. This is an exemplar of concise, structured description.

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

Completeness2/5

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

For a tool with 7 parameters, no output schema, and no annotations, the description is drastically under-specified. It covers only pagination, not the semantics of the filters, default sorting, output format, or any constraints like authorization. An agent would be unable to reliably construct a correct call without inspecting the schema (which is also sparse) or making assumptions. The description is insufficient for the tool's complexity.

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

Parameters2/5

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

Schema description coverage is only 14% (only 'query' has a description). The tool description mentions 'limit/offset' but does not explain any of the other five parameters. There is no compensation for the undocumented parameters, leaving the agent to guess the meaning and acceptable values for state, developer, timeframe, and application. The description adds minimal value beyond the schema's own limit/offset defaults.

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

Purpose5/5

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

The description states a specific verb and resource: 'List changesets (update sets).' It also clarifies the pagination behavior, which distinguishes it from related tools like get_changeset_details (which focuses on a single changeset) and mutation tools (update_changeset, commit_changeset, etc.). The purpose is unambiguous and well-scoped.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives. It does not mention that for detailed views of a specific changeset one should use get_changeset_details, or that mutation tools are for modifications. The only implicit guidance is 'list' suggests a read operation, but there is no direct routing or context about selection criteria.

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

list_groupsA

List groups. limit/offset paginate — this returns one bounded page, not the full table.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
limitNo
queryNoCase-insensitive search matched against group name or description
activeNo
offsetNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden. It does disclose pagination behavior—'returns one bounded page, not the full table'—which is useful. However, it does not mention order, side effects, or any other behavioral nuances that an agent might need to know for correctly interpreting results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a single sentence with a clear subject and an important behavioral note. It is front-loaded with the core purpose and adds only essential context. Every word earns its place.

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

Completeness3/5

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

The tool is relatively simple, but the description omits details about the output format, default behavior, or filtering options beyond the mention of pagination. With no output schema and low parameter descriptions, agents may not have enough information to fully understand the tool's behavior, especially for parameters like 'type' and 'active'.

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

Parameters2/5

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

Schema description coverage is only 20% (only 'query' is described). The description only vaguely references 'limit/offset paginate' without explaining the parameters' semantics. It does not compensate for the low schema coverage by clarifying 'type' or 'active' parameters, leaving agents with insufficient information to use them correctly.

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

Purpose5/5

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

The description clearly states 'List groups', which is a specific verb and resource. It is unambiguous and distinguishes from siblings like create_group, update_group, and other list_* tools by naming the exact resource being listed.

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

Usage Guidelines4/5

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

The description provides clear context that this tool lists groups, which implies when to use it. However, it does not explicitly mention alternatives or when not to use it. Since the resource is specific, the context is clear but exclusions are not stated.

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

list_incidentsC

List incidents, most recent first. limit/offset paginate — this returns one bounded page, not the full table.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoAdditional raw encoded query, ANDed with the filters above
stateNo
offsetNo
categoryNo
assigned_toNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose two key behaviors: ordering (most recent first) and pagination (returns a bounded page, not the full table). However, it does not mention whether the operation is read-only, any authentication or permission requirements, or what happens when no results match. These gaps are notable but partially offset by the explicit pagination note.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the purpose and ordering are stated first, followed by the pagination behavior. Every word earns its place, and it avoids repetition. It could be slightly more detailed without becoming verbose, but as-is it is efficient.

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

Completeness2/5

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

Given six parameters, no output schema, and no annotations, the description leaves significant gaps. It does not explain the filter parameters, the shape of the response (e.g., what fields are returned per incident), or error behavior. An agent calling this tool would likely need to inspect the schema further or infer from other tools to know how to filter correctly. The description is too sparse for a tool of this complexity.

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

Parameters2/5

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

Schema description coverage is only 17% (only the 'query' field has a description). The tool description clarifies that 'limit/offset' are used for pagination, which adds value beyond the schema. However, it provides no explanation for 'state', 'category', or 'assigned_to' filters, even though they likely serve as filtering criteria. With such low schema coverage, the description should compensate more thoroughly but only touches two of the six parameters.

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

Purpose4/5

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

The description clearly states the action ('List incidents') and the resource ('incidents'), and specifies the ordering ('most recent first'). It is distinct from other incident tools like create/update/get by number, though it does not name them explicitly. 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.

Usage Guidelines2/5

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

The description does not guide the agent on when to use this tool versus alternatives such as get_incident_by_number or resolve_incident. It only mentions pagination, implying it is for listing multiple incidents, but there is no explicit when-to-use or when-not-to-use guidance, and no mention of the sibling tools.

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

list_knowledge_basesB

List knowledge bases. limit/offset paginate — this returns one bounded page, not the full table.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoMatched against title or description
activeNo
offsetNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does add one useful behavioral trait: 'this returns one bounded page, not the full table', which clarifies pagination semantics beyond what the schema alone implies. However, it does not disclose whether the operation is read-only, whether authentication is required, or if there are side effects. Given the absence of annotations, a score of 3 reflects that it provides some valuable behavioral context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise: two sentences with no filler. It front-loads the core purpose ('List knowledge bases') and then immediately adds the critical pagination detail. Every word earns its place, and there is no redundant information.

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

Completeness2/5

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

Given the absence of an output schema and annotations, the description must provide a complete context for the agent to call the tool correctly. It covers pagination behavior but leaves 'active' undefined, does not describe the return format or structure, and does not mention any prerequisites or side effects. For a tool with four optional parameters and no output schema, this is insufficient for reliable agent usage.

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

Parameters3/5

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

Schema description coverage is only 25% (only 'query' has a description). The description partially compensates by explaining that 'limit/offset paginate' and that it returns a bounded page, giving meaning to 'limit' and 'offset'. However, it does not clarify the 'active' parameter, leaving it unexplained. Since the coverage is low, the description should do more to clarify all parameters; it adds value for two but remains incomplete.

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

Purpose5/5

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

The description states a specific verb ('List') and resource ('knowledge bases'), which precisely identifies what the tool does and clearly differentiates it from sibling tools like 'create_knowledge_base' or 'list_articles'. There is no ambiguity or tautology.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any conditions, exclusions, or references to sibling tools (e.g., when to prefer this over 'list_articles' or 'list_catalog_categories'). The only context is a pagination note, which is behavioral rather than a usage guideline.

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

list_usersA

List users, most recent first. limit/offset paginate — this returns one bounded page, not the full table.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoCase-insensitive search matched against name, username, or email
activeNo
offsetNo
departmentNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses ordering (most recent first) and pagination behavior (bounded page, not full table), which is useful. However, it omits the response structure (fields returned), filtering semantics beyond the schema, and any side effects or auth requirements. The disclosure is incomplete for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. The primary purpose is front-loaded, and the pagination caveat is stated concisely. Every word earns its place.

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

Completeness3/5

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

Given 5 parameters and no output schema, the description is sparse. It does not describe the shape of returned user objects, default values, or how query/active/department affect results. While the list operation is simple, the lack of output schema and low parameter coverage leaves gaps that a more thorough description could fill.

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

Parameters3/5

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

Schema description coverage is only 20% (only 'query' has a description). The description adds meaning to limit/offset by explaining their role in pagination, but does not comment on 'active' or 'department' parameters. Since coverage is low, the description should compensate but only partially does, leaving two parameters semantically opaque.

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

Purpose5/5

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

The description clearly states 'List users, most recent first' – a specific verb and resource with ordering. It distinguishes from the sibling get_user by plurality and from create_user/update_user by verb. The pagination note adds precision about the scope 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.

Usage Guidelines3/5

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

The description implies use for paginated listing by explaining limit/offset behavior and that it returns a bounded page. However, it does not explicitly state when to prefer this over get_user (single user) or how to combine with filters. No exclusion guidance is given, so the usage context is only partially conveyed.

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

move_catalog_itemsC

Move one or more catalog items to a different category.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idsYesCatalog item sys_ids to move
target_category_idYesTarget category title or sys_id

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states the action 'move', implying mutation, but does not elaborate on side effects, reversibility, required permissions, or what happens to moved items. This is significantly under-specified for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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 core action and resource. However, it lacks structure or additional helpful detail, so it misses a top score.

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

Completeness2/5

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

Given there is no output schema and no annotations, the description is insufficiently complete. It provides no information about expected outcomes, errors, or prerequisites. For a two-parameter mutation tool, this leaves too much unsaid for reliable agent use.

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

Parameters3/5

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

The input schema already provides complete descriptions for both parameters (item_ids and target_category_id), achieving 100% coverage. The description adds no additional meaning or nuance 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.

Purpose4/5

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

The description clearly states the action ('Move'), the resource ('catalog items'), and scope ('one or more'), which distinguishes it from related tools like update_catalog_item. However, it does not explicitly call out sibling differentiation, and the phrasing is direct enough to be unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There are no mentions of prerequisites, exclusions, or when not to use it. The usage is implied but not explicit, leaving the agent to infer 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.

publish_articleA

Change a knowledge article's workflow state (defaults to published). NOTE: confirmed on this PDI that a direct field write silently reverts to draft — article state appears governed by the platform's own publish flow, not settable via a bare Table API write.

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYessys_id of the article to publish
workflow_stateNoChoice label/value: draft, review, scheduled_publish, published, pending_retirement, retired, outdatedpublished
workflow_versionNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals a critical platform quirk—that a direct field write reverts to draft and that state is governed by the platform's own flow—which is valuable context. It also states the default state. However, it does not mention permissions, side effects, or return behavior, so it is not fully comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the main action and default. The note about the platform behavior is useful but slightly verbose, yet still fits in two sentences with no wasted words. Overall well-structured.

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

Completeness3/5

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

The tool has 3 params (1 required) and no output schema. The description covers the purpose and a key pitfall, but misses the meaning of workflow_version and any side effects or prerequisites. For a simple tool, it is adequate but not complete enough to fully prepare an agent without further investigation.

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

Parameters2/5

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

Schema coverage is 67% (article_id and workflow_state have descriptions; workflow_version does not). The description adds little beyond the schema: the 'defaults to published' is already in the schema, and it does not elaborate on workflow_version. The third parameter remains undocumented in both schema and description, and the description does not compensate for that gap.

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

Purpose5/5

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

The description clearly states a specific verb ('Change') and a specific resource ('knowledge article's workflow state'), with an additional default of 'published'. This distinguishes it from siblings like update_article (generic article update) and publish_changeset (changeset publication), 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.

Usage Guidelines3/5

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

The description implies this tool is the correct way to change article workflow state, noting that a direct field write silently reverts to draft. However, it does not explicitly name alternatives (like update_article) nor state when not to use this tool, leaving the selection guidance 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.

publish_changesetC

Publish a changeset. NOTE: requires a 'published' state choice to exist on sys_update_set — not present on every instance (confirmed absent on this PDI).

ParametersJSON Schema
NameRequiredDescriptionDefault
changeset_idYessys_id or name of the changeset
publish_notesNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal a key prerequisite—the 'published' state choice must exist—and even notes it's absent on the current PDI, which is valuable. However, it omits other behavioral aspects like side effects, reversibility, or what happens if the prerequisite is missing, so it is only moderately transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short—one action sentence plus a note—and it front-loads the core action. It is concise and efficient, though the note about the prerequisite makes it slightly longer than the bare minimum. Still, every word earns its place, so it scores well on conciseness.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is incomplete. It mentions a prerequisite but does not describe return values, error behavior, idempotency, or what publishing actually entails. The agent is left without enough context to predict the outcome, so completeness is low.

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

Parameters2/5

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

The schema describes changeset_id ('sys_id or name of the changeset') but publish_notes has no description, giving 50% coverage. The description adds no parameter information beyond the schema; it does not explain publish_notes or provide format hints. Since coverage is only 50%, the description should compensate but does not, leaving the agent to guess.

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

Purpose4/5

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

The description states a clear verb+resource: 'Publish a changeset.' It is specific and understandable, but it does not differentiate from siblings like commit_changeset or update_changeset, which could be confused. The purpose is clear but lacks explicit sibling distinction, 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.

Usage Guidelines2/5

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 only extra information is a prerequisite about the 'published' state choice, which is a technical requirement, not a usage directive. No mention of when commit_changeset or update_changeset would be more appropriate, so agents receive no routing help.

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

reject_changeA

Reject a change request's pending approval record and cancel the change. NOTE: may fail on instances with Change Model governance — confirmed on this PDI.

ParametersJSON Schema
NameRequiredDescriptionDefault
change_idYessys_id or change number
approver_idNoUsername, email, or sys_id of the approver
rejection_reasonYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a destructive mutation (rejecting and canceling) and includes a useful failure warning about Change Model governance. However, it does not describe the response format, side effects on the approval record, or permission requirements, leaving gaps 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence for the main action and one short warning. It is front-loaded with the core purpose and includes a critical environmental note without any fluff, making it easy for an agent to parse efficiently.

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

Completeness3/5

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

For a simple mutation tool with no output schema, the description covers the primary action and an important failure condition. However, it does not explain what happens to the pending approval record, how rejection_reason is used, or any return value expectations. The failure warning is valuable, but the lack of parameter guidance and side-effect detail leaves some gaps.

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

Parameters2/5

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

The schema description coverage is 67%, and the description adds no parameter-specific detail. rejection_reason is required but lacks a description in both schema and tool description, and the description does not clarify how to use approver_id or the acceptable format of change_id. The description provides no meaningful parameter semantics beyond what the schema already offers.

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

Purpose5/5

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

The description clearly states the specific action 'Reject' on 'a change request's pending approval record' and the resulting effect 'cancel the change'. This is distinct from siblings like approve_change and submit_change_for_approval, 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.

Usage Guidelines3/5

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, nor does it mention exclusions or specific conditions for use. The purpose makes the primary use obvious, but no additional guidance is given beyond a failure warning that applies to certain environments, not usage context.

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

remove_group_membersB

Remove one or more members from a group.

ParametersJSON Schema
NameRequiredDescriptionDefault
membersYesUsernames, emails, or sys_id:<id>-prefixed sys_ids
group_idYesGroup name or sys_id

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It states the mutation ('Remove') but offers no details on idempotency, error handling, permissions, side effects, or what happens to non-existent members. The agent is left without knowledge of important behaviors beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no redundancy. The verb and resource are front-loaded, and there is zero wasted wording. For a tool of this simplicity, the length is appropriate.

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

Completeness3/5

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

For a simple mutation tool with two parameters and no output schema, the description is minimal. It does not mention return values, success/failure indicators, or edge cases, which could be important for an agent to handle correctly. The basic purpose is clear, but behavioral context is lacking.

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

Parameters3/5

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

The input schema provides descriptions for both parameters (group_id and members) with 100% coverage. The description adds no extra parameter information, so the schema fully handles parameter meaning. This 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.

Purpose4/5

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

The description clearly states 'Remove one or more members from a group' – a specific verb and resource. It differentiates from the sibling 'add_group_members' via the verb 'remove', though it does not explicitly name the alternative or expand on scope.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives or any exclusions. The description simply states the action without context, prerequisites, or conditions for use. There is no mention of when to prefer this over adding members or other operations.

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

resolve_incidentC

Resolve an incident (sets state to Resolved with a resolution code and notes).

ParametersJSON Schema
NameRequiredDescriptionDefault
incident_idYessys_id or incident number
resolution_codeYes
resolution_notesYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the state transition to Resolved and the required inputs, but fails to mention side effects, reversibility, permission requirements, or what happens after resolution. This is insufficient for a state-changing operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the primary action and outcome. There is zero wasted text, and the parenthetical efficiently conveys the key details. It is appropriately concise for a straightforward operation.

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

Completeness2/5

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

For a mutation with three required parameters, no output schema, and no annotations, this description is incomplete. It omits guidance on valid resolution codes, the impact of resolution on related records, and how it differs from update_incident. An agent would lack critical context to invoke this tool reliably.

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

Parameters2/5

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

Schema description coverage is only 33% (only incident_id is described). The description mentions 'resolution code and notes' but does not clarify valid values for resolution_code, the format or purpose of resolution_notes, or how incident_id should be specified beyond the schema's generic hint. It adds minimal meaning over the schema.

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

Purpose4/5

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

The description clearly states the verb 'Resolve' and the resource 'incident', and adds the specific outcome: 'sets state to Resolved with a resolution code and notes'. This is specific and distinguishable from generic update operations, though it does not explicitly differentiate from sibling tools like update_incident beyond the state change.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as update_incident or add_comment. No prerequisites, context, or conditions for resolution are mentioned. An agent would have to infer the appropriate scenario 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.

submit_change_for_approvalA

Submit a change request for approval (sets state to Assess and creates an approval record). NOTE: may fail on instances with Change Model governance (state transition business rules) or where sysapproval_approver doesn't accept direct inserts — confirmed on this PDI.

ParametersJSON Schema
NameRequiredDescriptionDefault
change_idYessys_id or change number
approval_commentsNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral disclosure. It states the state transition (to Assess), the side effect (creates an approval record), and explicit failure conditions (Change Model governance, sysapproval_approver direct inserts). This is notably transparent, even if it doesn't cover reversibility or permissions. The only minor gap is the lack of mention about return values or success behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first front-loads the main action and effect, the second adds a warning note. No redundant filler, and the structure is efficient. It loses a point only because the note, while important, is slightly tangential to the core action.

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

Completeness3/5

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

The description covers the core action, side effects, and known failure modes, but omits the purpose of approval_comments and any expectations about the success response. For a simple two-parameter tool, this is decent, yet the missing parameter info creates a real gap that an agent must resolve through inference or trial.

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

Parameters2/5

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

The schema describes only one of two parameters (change_id), and the description adds no clarification about approval_comments – its purpose, format, or whether it's used to populate the approval record. Since the description could easily have explained approval_comments but didn't, it fails to compensate for the 50% schema coverage. The agent must guess what to pass for approval_comments.

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

Purpose5/5

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

The description clearly states the specific verb and resource: 'Submit a change request for approval', and describes the immediate effects (sets state to Assess, creates an approval record). This differentiates it from sibling tools like approve_change, which would handle an existing approval record. 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.

Usage Guidelines3/5

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

The description does not explicitly contrast with sibling tools such as approve_change or reject_change, nor does it state when this tool is preferred over them. It implies usage by naming its action, but leaves the agent to infer the decision boundary (e.g., 'use this to submit a new change, use approve_change to respond to an approval request'). No explicit 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_articleC

Update an existing knowledge article.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
titleNo
categoryNoCategory title or sys_id
keywordsNo
article_idYessys_id of the article to update
short_descriptionNo

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that it updates an existing article, but does not mention whether it is a partial update, what happens to unspecified fields, required permissions, reversibility, or response format. This is a mutation tool with zero annotation coverage, so these gaps are significant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, highly concise and front-loaded. However, the brevity comes at the cost of essential information. While the sentence is not redundant, it is under-specified, making this 'conciseness' more like minimalism than effective compression.

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

Completeness1/5

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

For a tool with 6 parameters, no output schema, and zero annotations, the description is completely inadequate. It does not explain the effect of the update, which fields are updatable, or any behavioral details. An agent would have to rely on parameter names and external knowledge to use it correctly, which is insufficient for a production environment.

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

Parameters2/5

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

Schema description coverage is only 33% (only article_id and category have schema descriptions). The description does not add any parameter semantics beyond what the schema provides. It fails to explain the meaning of text, title, keywords, short_description, or the update behavior for these fields, leaving the agent to guess from parameter names alone.

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

Purpose4/5

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

The description clearly states a specific action ('update') on a specific resource ('knowledge article'), which distinguishes it from create_article, get_article, list_articles, and publish_article. However, it does not explicitly differentiate it from similar update tools for other resources (e.g., update_catalog_item), though the resource name makes the scope obvious.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like create_article or publish_article. There is no mention of prerequisites, conditions, or exclusions. An agent cannot tell whether this tool is appropriate for a given task without inferring from context.

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

update_catalog_categoryC

Update an existing service catalog category.

ParametersJSON Schema
NameRequiredDescriptionDefault
iconNo
orderNo
titleNo
activeNo
parentNoParent category title or sys_id
category_idYesCategory sys_id
descriptionNo

TDQS

C2.1/5.0
Behavior1/5

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

With no annotations provided, the description carries full responsibility for disclosing behavioral traits. 'Update' implies mutation, but nothing is mentioned about partial update semantics, required fields alongside category_id, permissions needed, side effects on related items, or whether the operation is reversible. This is a significant gap for a 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise in form but fails to convey substantive information. It does not earn its place because it only restates the tool name's meaning without adding guidance or context.

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

Completeness1/5

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

For an update tool with 7 parameters, no output schema, and no annotations, the combination of a vague description and sparse schema makes it impossible for an agent to understand field semantics, required versus optional updates, or the impact of the operation. Contextual completeness is severely lacking.

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

Parameters1/5

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

Schema description coverage is only 29% (only category_id and parent have descriptions). The tool description adds no parameter details beyond their names, leaving 5 parameters (icon, order, title, active, description) completely unexplained. The low coverage requires the description to compensate, but it does not.

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

Purpose4/5

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

The description clearly states the action (update) and the target (existing service catalog category), which distinguishes it from create_catalog_category and list_catalog_categories. It is specific enough to identify the tool's core purpose, though it does not enumerate what fields 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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as prerequisites (e.g., needing an existing category), or when not to use it. There is no mention of scenarios where create or list 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.

update_catalog_itemC

Update an existing catalog item's core fields (name, description, category, price, active, order).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
orderNo
priceNo
activeNo
item_idYesCatalog item sys_id
categoryNoCategory title or sys_id
descriptionNo
short_descriptionNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Update' implies mutation, but there's no disclosure of side effects, whether the update is partial (likely, but unstated), required permissions, or what happens to unspecified fields. For a mutation tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler, which is efficient. However, it is very thin—it lists fields but no nuance. It's not verbose, but the brevity comes at the cost of omitted useful information. It is structured adequately for the little it says.

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

Completeness2/5

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

No output schema, 8 parameters, and no explanation of partial update behavior, return values, or error conditions. An agent cannot tell whether all fields are optional beyond item_id, how category accepts title vs sys_id, or what the response looks like. The description is insufficient for the tool's complexity.

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

Parameters2/5

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

Only 25% of parameters have schema descriptions (item_id and category). The description lists core fields but adds no semantic detail: price is a string (currency/format unknown), order is numeric (sort order?), active is boolean, and short_description is omitted entirely. It doesn't compensate for the poor schema coverage, leaving many parameters vague.

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

Purpose4/5

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

The description clearly states the tool updates an existing catalog item and lists the core fields (name, description, category, price, active, order). It distinguishes from create_catalog_item by saying 'existing', but doesn't differentiate among sibling update tools like update_catalog_category or update_catalog_item_variable. The resource is unambiguous, so it's above average but not perfect.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives such as create_catalog_item or move_catalog_items. It doesn't state prerequisites (e.g., needing an existing item_id) or exclusions. The description only says 'update', implying use for modifications, but offers no explicit context or routing to other tools.

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

update_catalog_item_variableC

Update an existing catalog item variable.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxNo
minNo
labelNo
orderNo
help_textNo
mandatoryNo
max_lengthNo
descriptionNo
variable_idYessys_id of the variable to update
default_valueNo
reference_qualifierNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not mention side effects, idempotency, permissions, error conditions, or return values. The single statement is purely functional with no added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence with no fluff. It is appropriately concise and front-loaded with the core action. However, it might be too minimal, but conciseness alone is well achieved.

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

Completeness2/5

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

Given the tool has 11 parameters and no output schema, the description is grossly incomplete. It does not explain required vs optional fields (beyond schema), update semantics, or relationships to other catalog components. An agent would have insufficient information to call it correctly beyond a guess.

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

Parameters1/5

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

Schema description coverage is only 9% (only variable_id has a description). The tool description adds zero explanation for the other 10 parameters. It does not compensate for the low coverage; no parameter semantics beyond the bare names are provided.

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

Purpose5/5

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

The description clearly states a specific verb ('Update') and a specific resource ('existing catalog item variable'), which distinguishes it from sibling tools like create_catalog_item_variable and list_catalog_item_variables. No ambiguity about the primary action.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like create_catalog_item_variable. It simply states what it does without context on selection criteria, prerequisites, or when updating is appropriate over creating.

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

update_change_requestB

Update an existing change request (accepts sys_id or change number).

ParametersJSON Schema
NameRequiredDescriptionDefault
riskNo
stateNoChoice label, e.g. Assess, Authorize, Scheduled, Implement, Review, Closed, Canceled
impactNo
categoryNo
end_dateNo
change_idYessys_id or change number (e.g. CHG0010001)
start_dateNo
work_notesNo
descriptionNo
assignment_groupNo
short_descriptionNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only says 'update,' which implies mutation, but it does not mention permissions, reversibility, response behavior, or that fields are optional. This is a significant gap for a mutating tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that delivers the core action and the key identifier nuance without any wasted words. It is concise and readable.

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

Completeness1/5

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

With 11 parameters, no annotations, no output schema, and only 18% schema coverage, this description is far from complete. The agent needs to know field value formats (e.g., date syntax, choice values for state, impact, risk) and typical usage patterns. None of that is provided, so the tool cannot be reliably invoked beyond passing an identifier.

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

Parameters2/5

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

Schema description coverage is only 18%, so the schema provides little meaning. The description adds value only for `change_id` (explicitly stating sys_id or change number). The other 10 parameters (risk, impact, category, dates, work_notes, etc.) are completely undocumented by both schema and description, leaving the agent to guess formats and allowed values.

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

Purpose5/5

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

The description clearly states the action ('Update') and the resource ('an existing change request'), and adds that it accepts either sys_id or change number. This distinguishes it from related tools like create_change_request and get_change_request_details, so an agent can readily identify its purpose.

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

Usage Guidelines3/5

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

The description implies it is for modifying existing change requests, but it does not explicitly state when to use it over alternatives such as submit_change_for_approval, approve_change, or reject_change. No exclusions or prerequisites are mentioned, so the guidance is thin.

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

update_changesetC

Update an existing changeset (accepts sys_id or name).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
stateNoin progress, complete, or ignore
developerNo
descriptionNo
changeset_idYessys_id or name of the changeset

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It indicates mutation ('update') but does not disclose reversibility, permission requirements, side effects on linked files, or validation constraints. This is a significant gap for a 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. However, it is under-specified for a five-parameter mutation tool, so while concise, it lacks the substance needed to be appropriately sized.

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

Completeness1/5

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

For a mutation tool with five parameters, no annotations, and no output schema, the description provides only the basic verb and resource. It does not explain which fields are updatable, constrained values, or expected outcomes, making it far from complete for an agent to call it correctly.

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

Parameters2/5

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

Schema coverage is only 40% (state and changeset_id have descriptions); the remaining parameters (name, developer, description) are undocumented. The description adds no meaning beyond the schema, such as allowed values or relationships between fields, and does not offset the coverage gap.

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

Purpose4/5

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

The description states a clear action ('update') on a specific resource ('changeset') and adds a useful detail about identifier formats ('accepts sys_id or name'). This distinguishes it from create_changeset and specialized operations like commit_changeset, but it does not explicitly contrast with siblings.

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

Usage Guidelines2/5

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

The description implies use on existing changesets but gives no explicit guidance on when to choose this over create_changeset, commit_changeset, or publish_changeset. No alternatives or exclusions are mentioned, leaving the agent to infer usage from the verb alone.

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

update_groupC

Update an existing group (accepts sys_id or name).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
typeNo
emailNo
activeNo
parentNo
managerNo
group_idYesGroup sys_id or name to update
descriptionNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that the tool updates a group and accepts an identifier. It does not disclose side effects (e.g., whether fields not specified are retained or reset), permission requirements, error behavior (e.g., if the group does not exist), or whether the update is partial or full. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with zero filler. It front-loads the core action and includes the key identifier detail. There is no unnecessary verbiage, and the structure is appropriate for the tool's simplicity.

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

Completeness2/5

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

For a tool with eight parameters, no output schema, and no annotations, the description is severely incomplete. It does not convey expected call patterns, handling of edge cases, or any update semantics beyond the basic action. An agent would need to inspect the schema and possibly other documentation to use it correctly, which the description fails to provide.

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

Parameters1/5

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

Schema description coverage is only 13% (group_id is described, but the other seven parameters are not). The description adds no extra meaning for these parameters—it only restates the group_id flexibility already present in the schema. It does not compensate for the low coverage by explaining what 'name', 'type', 'email', 'active', etc., mean or how they should be used. Essentially, the description provides no value beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Update') and the resource ('an existing group'), and specifies that it accepts either sys_id or name. This unambiguously distinguishes it from sibling tools like create_group, add_group_members, and list_groups. It is a specific verb+resource statement with no ambiguity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or context such as 'use this to modify group properties; use add_group_members to manage membership.' There is no explicit or even implicit comparison to sibling tools, leaving 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.

update_incidentC

Update an existing incident (accepts sys_id or incident number).

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNo
impactNo
urgencyNo
categoryNo
priorityNo
close_codeNo
work_notesNo
assigned_toNo
close_notesNo
descriptionNo
incident_idYessys_id or incident number (e.g. INC0010001)
subcategoryNo
assignment_groupNo
short_descriptionNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are present, so the description must carry the full burden of behavioral disclosure. It only states that the tool 'updates' an incident, implying mutation, but does not reveal what side effects occur (e.g., whether all provided fields are updated, what happens if the incident does not exist, whether permissions are required, or what the response format is). This is a significant gap for a mutating tool with no other 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no fluff, and the key identifier info (sys_id or number) is front-loaded. However, it is arguably too terse for a tool with this many parameters; it omits necessary detail. It is well-structured but under-informative, earning a 4 rather than a 5.

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

Completeness1/5

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

Given 14 parameters, no annotations, no output schema, and only 7% schema coverage, the description is severely incomplete. It does not explain which fields are updatable, how they should be formatted, any relationships between fields (e.g., state transitions), or expected behavior. An agent cannot reliably call this tool correctly based on the current description and schema alone.

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

Parameters1/5

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

Schema description coverage is only 7% (only 'incident_id' has a description). The tool has 14 parameters, and the description adds no information about the other 13 (state, impact, urgency, etc.). It merely repeats the incident_id description already present in the schema. With such low coverage, the description should have listed or explained the updatable fields, but it does not, leaving agents without guidance on how to fill them.

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

Purpose4/5

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

The description clearly states the verb ('Update') and resource ('an existing incident'), and specifies that it accepts sys_id or incident number. This is a clear purpose. However, it does not differentiate from the sibling tool 'resolve_incident', which is also an update operation but specific to resolution. The generic nature of 'update' is implied but not contrasted.

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

Usage Guidelines2/5

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

No usage guidance is provided beyond the action itself. The description does not state when to use this tool versus 'resolve_incident' or other incident-related tools, nor does it mention any prerequisites (e.g., requiring an existing incident ID) or context. An agent would have to infer when this is the appropriate choice.

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

update_userC

Update an existing user (accepts sys_id, username, or email).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
phoneNo
rolesNoRole names to assign (additive, not a replace-all)
titleNo
activeNo
managerNo
user_idYessys_id, username, or email of the user to update
locationNo
passwordNo
last_nameNo
user_nameNo
departmentNo
first_nameNo
mobile_phoneNo

TDQS

C2.9/5.0
Behavior2/5

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

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It states it updates a user, implying mutation, but does not disclose failure behavior (e.g., what happens if the user is not found), whether only provided fields are updated or all fields are reset, or any auth/rate-limit requirements. For a mutation tool with 14 parameters and no annotations, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words—hence it is concise. However, it is under-specified, not merely efficient. It lacks essential behavioral details and parameter guidance, so the brevity works against its usefulness. It's a borderline case: conciseness in structure but not in content.

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

Completeness2/5

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

Given the tool's complexity (14 parameters, mutation, no annotations, no output schema), the description is woefully incomplete. It does not mention return values, error handling, field update semantics (partial vs replace), or any constraints. The only saving grace is the identifier-format note, but that is insufficient for safe and correct invocation by an agent.

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

Parameters2/5

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

Schema coverage is only 14% (only roles and user_id have descriptions). The description adds a note about user_id accepting sys_id, username, or email, but this duplicates the schema's own description for that field. It provides no additional meaning for the other 13 parameters, many of which (e.g., password, manager, location) could benefit from clarification. The description fails to compensate for the low schema coverage.

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

Purpose5/5

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

The description clearly states the action 'Update an existing user' with a specific verb and resource. It also specifies that the user can be identified by sys_id, username, or email, which distinguishes it from sibling tools like create_user (creation) and get_user (read). No ambiguity remains about the tool's core function.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives, such as create_user for new users or get_user for read-only access. It also doesn't mention any prerequisites or conditions (e.g., the user must already exist). The only hint is the word 'existing', but that's implicit and not a clear routing instruction.

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. 52 tool updatesv1.0.0
    • First observedadd_change_task
    • First observedadd_comment
    • First observedadd_file_to_changeset
    • First observedadd_group_members
    • First observedapprove_change
    • First observedcommit_changeset
    • First observedcreate_article
    • First observedcreate_catalog_category
    • First observedcreate_catalog_item_variable
    • First observedcreate_category
    • First observedcreate_change_request
    • First observedcreate_changeset
    • First observedcreate_group
    • First observedcreate_incident
    • First observedcreate_knowledge_base
    • First observedcreate_user
    • First observedget_article
    • First observedget_catalog_item
    • First observedget_change_request_details
    • First observedget_changeset_details
    • First observedget_developer_work_report
    • First observedget_incident_by_number
    • First observedget_optimization_recommendations
    • First observedget_syslog_report
    • First observedget_user
    • First observedlist_articles
    • First observedlist_catalog_categories
    • First observedlist_catalog_item_variables
    • First observedlist_catalog_items
    • First observedlist_categories
    • First observedlist_change_requests
    • First observedlist_changesets
    • First observedlist_groups
    • First observedlist_incidents
    • First observedlist_knowledge_bases
    • First observedlist_users
    • First observedmove_catalog_items
    • First observedpublish_article
    • First observedpublish_changeset
    • First observedreject_change
    • First observedremove_group_members
    • First observedresolve_incident
    • First observedsubmit_change_for_approval
    • First observedupdate_article
    • First observedupdate_catalog_category
    • First observedupdate_catalog_item
    • First observedupdate_catalog_item_variable
    • First observedupdate_change_request
    • First observedupdate_changeset
    • First observedupdate_group
    • First observedupdate_incident
    • First observedupdate_user

TDQS

B3/5.0

Scored across 52 tools

Disambiguation5/5

Each tool targets a distinct resource and action. Even similar-sounding tools like create_catalog_category versus create_category are clearly separated by context in their descriptions. The report tools are also distinct from CRUD operations.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern (e.g., list_incidents, create_incident, update_incident, get_incident_by_number). Minor deviations like create_category are still unambiguous due to domain context, and the overall style is uniform.

Tool Count2/5

With 52 tools, the server is heavily overloaded, even though it covers multiple ServiceNow domains. This exceeds the 25-tool threshold for 'too many' and risks making tool selection more complex. While the breadth justifies a higher count, the sheer number is excessive for coherence.

Completeness4/5

The tool surface covers full CRUD and lifecycle operations for most domains: incidents, users, groups, changesets, catalog, knowledge, and change requests. Minor gaps exist (no delete operations for several resources, no incident approval workflow), but these are acceptable and do not hinder core workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides AI assistants with read access to ServiceNow instances to aid in building and debugging applications. It enables users to query tables, retrieve specific records, and inspect table schemas using standard ServiceNow encoded query strings.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables authenticated interaction with ServiceNow via its REST API using per-user OAuth 2.0 tokens. It provides tools for managing incidents, tasks, knowledge articles, and service catalog requests while maintaining user-specific permissions.
    16 npm
    4
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A read-only MCP server that enables AI assistants to query ServiceNow instances—incidents, changes, users, CMDB—with malformed query linting and injection protection.
    7
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes Azure Log Analytics workspace data with tools for querying AuditLogs and AzureActivity tables, supporting custom KQL queries, time range filters, and pagination.
    -