Skip to main content
Glama
swsd-mcp

swsd-mcp

by mikimatsub

swsd_list_catalog_items

Read-onlyIdempotent

List available SolarWinds Service Desk catalog items to find service request templates, filterable by query, site, department, or state.

Instructions

List catalog items available in SolarWinds Service Desk. Each item represents an offerable service request template (e.g., "New Employee Onboarding", "Software Request") with a defined set of input variables (form fields). Use swsd_get_catalog_item to inspect a single item's variables, then swsd_create_service_request to submit a request.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "swsd_list_catalog_items"
  }
}

Input Schema

NameRequiredDescriptionDefault
pageNoPage number (1-indexed).
siteNoFilter by site name.
queryNoFree-text search across catalog item names + descriptions (maps to the SWSD `name` query param).
stateNoFilter by state ("Approved", "Internal", or "Draft").
per_pageNoResults per page (1-100). SWSD caps at 100.
departmentNoFilter by department name.

Output Schema

NameRequiredDescriptionDefault
itemsYes
paginationYes
applied_filtersYesEcho of the filters applied to this query — empty object if none. Use this to reason about whether the result count reflects your filters or the tenant total.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv3.3.0
    • addedOutput schema / properties / pagination / properties / matched_total
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Total matching records, or null when unknown. After local filtering, known only when all candidate pages were scanned from page 1. Independent of display caps."
      +}
    • changedOutput schema / properties / pagination / properties / total_scope / description
      Previous value: -"Whether `total` reflects the filtered-set size, the tenant-wide size, or is unknown. 'filtered' = filter was applied AND total is present; 'tenant' = no filter AND total is present; 'unknown' = total absent."New value: +"Scope of the upstream `total`: 'upstream' = candidates before local filtering; 'filtered' = server-filtered count with no local filtering; 'tenant' = unfiltered count; 'unknown' = total absent. Sorting and display options are not filters."
    • changedOutput schema / properties / pagination / properties / total_scope / enum
      Previous value: -[
      -  "filtered",
      -  "tenant",
      -  "unknown"
      -]New value: +[
      +  "filtered",
      +  "tenant",
      +  "unknown",
      +  "upstream"
      +]
  2. Changed2 schema fields changedv3.0.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  3. Changed4 schema fields changedv2.3.1
    • addedInput schema / properties / department / maxLength
      Added value: +500
    • addedInput schema / properties / query / maxLength
      Added value: +2000
    • addedInput schema / properties / site / maxLength
      Added value: +500
    • addedInput schema / properties / state / maxLength
      Added value: +500
  4. First observedv2.1.0

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered without description help. The description adds useful semantic context (items are templates carrying form-field variables) but says nothing about result scope — e.g. whether Draft/Internal items appear by default without the state filter — or pagination behavior. Useful but not rich 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?

Three tight sentences, front-loaded with purpose before describing the entity and then the sibling workflow. There is a little redundancy between the first and second sentence ("catalog items"/"Each item"), but every clause carries information an agent needs.

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

Completeness4/5

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

An output schema exists, so return-value explanation is not required, and all six optional parameters are fully documented in the schema. The description covers purpose, entity semantics, and the downstream workflow. The only gap is default listing scope and paging expectations, which is minor for a read-only list tool.

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 all six filters including the query-to-`name` mapping documented inline, so the schema carries the parameter burden. The description mentions no filter, paging, or search semantics at all. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource ("List catalog items") and then defines what the resource actually is — an offerable service request template with input variables — with concrete examples like "New Employee Onboarding". It is clearly distinguishable from siblings swsd_get_catalog_item (single item) and swsd_create_service_request (submit).

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?

Gives an explicit three-step workflow: list here, inspect variables via swsd_get_catalog_item, then submit via swsd_create_service_request. That is clear context for when to use this tool and what comes next. It does not state any exclusion, such as when to skip listing entirely or how filters narrow the set, 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.