Skip to main content
Glama
the-real-snipeit-mcp

the-real-snipeit-mcp

the-real-snipeit-mcp

An unofficial MCP server for the Snipe-IT REST API: one generated tool for every operation in the vendored Snipe-IT OpenAPI 3.1 spec (read + write), hand-written wrappers for common workflows, stdio transport.

Unofficial, not affiliated with Snipe-IT/Grokability. This project is not affiliated with, endorsed by, sponsored by or supported by Grokability, Inc. or the Snipe-IT project. "Snipe-IT" is a trademark of its owner. The vendored API description and its license situation are described in NOTICE.

Three tool layers (183 tools):

  • 37 hand-wrappers (snipeit_*): friendlier UX for common workflows

  • 145 generated tools (snipeit_gen_*): one per operation of the vendored spec (vendor/snipe-it-rest-api.json, Snipe-IT 8.2.0)

  • snipeit_raw_request: escape hatch for any method and path under SNIPEIT_API_BASE

Plus 3 resources and 3 prompts. The counts are held by tests/unit/docsFacts.test.ts.


Maintenance status

  • Maintained on a best-effort basis by one maintainer (@mguttmann) in spare time. The author runs it in production behind a private MCP gateway. There is no support contract and no guaranteed response time.

  • Security fixes take priority over features. Report vulnerabilities privately through GitHub Private Vulnerability Reporting, never in a public issue (see SECURITY.md).

  • Dependency updates come from Dependabot; CI fails when a runtime dependency has a known high or critical advisory.

  • Supported Node.js versions: 22.12 or newer (engines in package.json); CI tests Node 22, 24 and 26.

  • Only the latest minor release gets fixes. Releases and their changes: CHANGELOG.md.

  • Issues and pull requests are welcome; see CONTRIBUTING.md.

Related MCP server: swsd-mcp

Install

Requires Node.js 22.12 or newer. The server needs SNIPEIT_API_BASE (your instance, including /api/v1) and SNIPEIT_API_TOKEN; all other variables are optional (see Configuration). Only the npm package the-real-snipeit-mcp and the MCP Registry name io.github.mguttmann/the-real-snipeit-mcp are this project.

npx (any stdio MCP host)

npx fetches and runs the package; no clone or build is needed. Attach it to Claude Code (type the token in your shell, never into a chat):

claude mcp add snipeit \
  -e SNIPEIT_API_BASE=https://snipe-it.example.com/api/v1 \
  -e SNIPEIT_API_TOKEN=<token> \
  -- npx -y the-real-snipeit-mcp

Any other stdio host takes the same command in its JSON configuration (Claude Desktop: claude_desktop_config.json):

{
  "mcpServers": {
    "snipeit": {
      "command": "npx",
      "args": ["-y", "the-real-snipeit-mcp"],
      "env": {
        "SNIPEIT_API_BASE": "https://snipe-it.example.com/api/v1",
        "SNIPEIT_API_TOKEN": "<token>"
      }
    }
  }
}

A configuration file with these values holds the token: keep it readable for your user only and out of version control. the-real-snipeit-mcp@<version> pins a version.

Global install

npm install -g the-real-snipeit-mcp

The command is the-real-snipeit-mcp; use it as "command" in the host configuration above (without args).

From source

git clone https://github.com/mguttmann/the-real-snipeit-mcp.git
cd the-real-snipeit-mcp
npm ci
cp .env.example .env
# edit .env: set SNIPEIT_API_BASE and SNIPEIT_API_TOKEN
npm run build        # prebuild runs lint, typecheck and the unit tests first
node --env-file=.env dist/index.js

npm run inspector opens the MCP Inspector against the built server.

Pinned install for gateways and servers

For an unattended host, install an exact version from a committed lockfile, without install scripts and without dev dependencies, and check the registry signatures and provenance attestations:

mkdir snipeit-mcp && cd snipeit-mcp
npm init -y
npm install --save-exact --ignore-scripts the-real-snipeit-mcp@<version>   # once; commit package.json and package-lock.json
# on every deploy:
npm ci --omit=dev --ignore-scripts
npm audit signatures
node --env-file=/path/to/.env node_modules/the-real-snipeit-mcp/dist/index.js

Each release on GitHub Releases carries the npm tarball, a CycloneDX SBOM and SHA256SUMS; releases published by the release workflow carry an npm provenance statement and a GitHub build provenance attestation.

MCP Registry and Glama

Each stable release is listed in the official MCP Registry as io.github.mguttmann/the-real-snipeit-mcp (the npm package, with its environment variables). glama.json names the maintainer of the Glama listing.

Configuration

Variable

Default

Description

SNIPEIT_API_TOKEN

(required)

Snipe-IT Personal API Token (JWT)

SNIPEIT_API_BASE

https://snipe-it.example.com/api/v1

API base URL. The default is an RFC 2606 placeholder; set your instance. The server starts with any valid URL but logs a warning when the placeholder is in use, when http goes to a non-loopback host (cleartext token), for other schemes, for credentials in the URL and for a query or fragment

SNIPEIT_CONFIRM_WRITES

true

If on (default), destructive tools require confirm: "YES". Only false, 0, no or off (any case) disable the guard; empty or unrecognised values keep it on and log a warning. The effective state is logged to stderr at startup

SNIPEIT_TIMEOUT_MS

30000

Timeout in ms per attempt (positive integer), covering the response headers and the full body read

SNIPEIT_LOG_LEVEL

info

debug | info | warn | error

SNIPEIT_MAX_RESULT_BYTES

1048576 (1 MiB)

Cap for one tool result (serialized JSON, bytes); minimum 65536. Values above 8 MiB log a warning: TypeScript SDK clients read at most 10 MiB per message. Larger results are shortened to valid JSON with a truncation marker (see Large and binary results). One HTTP response body is never buffered beyond the larger of 16 MiB and 4 times this value.

SNIPEIT_CALL_DEADLINE_MS

0 (none)

Overall deadline for one tool call in ms, across retries, backoffs and all: true pagination; 0 disables it. A call past the deadline ends with a DEADLINE_EXCEEDED tool error; all: true returns the rows collected so far with truncated: true and next_offset

SNIPEIT_REDACT_PII

false

Mask personal data in tool results and resource reads with (redacted) (not in error texts or write previews): email, employee_num(ber), phone, mobile, address, address2, username, first_name, last_name at any depth, and name of objects that describe a person. Asset, model and location names stay. Accepts true/false (also 1/0, yes/no, on/off); an unrecognised value turns it on and logs a warning

SNIPEIT_REDACT_SECRETS

false

Mask secrets in tool results and resources with (redacted): the value of every key matching password|secret|token|api[_-]?key at any depth, and the value of every custom_fields entry (object or array form) whose display name or database column (_snipeit_*, also as a flat key in write responses) matches passw|kennw|secret|token|key|recovery|bitlocker|pin|laps (any case; broad on purpose, so "Keyboard layout" is masked too); also old and new of every log_meta entry (action log, /reports/activity) and the default_value of every custom field definition whose name or column matches either rule. Null and empty values stay. Error texts that echo such a JSON field are masked as well. Same accepted values as SNIPEIT_REDACT_PII; an unrecognised value turns it on and logs a warning. Write tools always refuse a body that contains the placeholder (see Write safety)

SNIPEIT_READ_ONLY

false

Refuse every write at runtime with a READ_ONLY tool error; all tools stay registered and reads work. Same accepted values as SNIPEIT_REDACT_PII; an unrecognised value turns it on

SNIPEIT_REQUIRE_PREVIEW

false

While the write guard is on, confirm: "YES" executes only after a preview of the identical request in the last 10 minutes, once per preview. Off: confirm: "YES" executes in the first call. Same accepted values as SNIPEIT_REDACT_PII

Variables come from the environment, from node --env-file=<file>, or from a .env in the working directory (or DOTENV_CONFIG_PATH), which never overrides a variable that is already set. The names (never the values) of the variables a .env added are logged to stderr at startup.


Tool reference

Hand-wrappers (37 tools)

Identity (1)

Tool

Endpoint

Annotations

snipeit_me

GET /users/me

readOnly

Hardware / Assets (13)

Tool

Endpoint

Annotations

snipeit_list_hardware

GET /hardware (paginated, common filters)

readOnly

snipeit_search_hardware

GET /hardware?search={query} (convenience)

readOnly

snipeit_get_hardware_by_id

GET /hardware/{id}

readOnly

snipeit_get_hardware_by_tag

GET /hardware/bytag/{tag}

readOnly

snipeit_get_hardware_by_serial

GET /hardware/byserial/{serial}

readOnly

snipeit_create_hardware

POST /hardware

writeOnce

snipeit_update_hardware

PATCH /hardware/{id}

writeIdempotent

snipeit_delete_hardware

DELETE /hardware/{id} (soft delete; snipeit_gen_hardwareidrestore restores)

writeIdempotent

snipeit_checkout_hardware

POST /hardware/{id}/checkout (user/location/asset)

writeOnce

snipeit_checkin_hardware

POST /hardware/{id}/checkin

writeOnce

snipeit_audit_hardware

POST /hardware/audit

writeOnce

snipeit_list_audit_due

GET /hardware/audit/due

readOnly

snipeit_list_audit_overdue

GET /hardware/audit/overdue

readOnly

Users (5)

Tool

Endpoint

Annotations

snipeit_list_users

GET /users

readOnly

snipeit_get_user

GET /users/{id}

readOnly

snipeit_get_user_assets

GET /users/{id}/assets

readOnly

snipeit_get_user_accessories

GET /users/{id}/accessories

readOnly

snipeit_get_user_licenses

GET /users/{id}/licenses

readOnly

Licenses (3)

Tool

Endpoint

Annotations

snipeit_list_licenses

GET /licenses

readOnly

snipeit_get_license_seats

GET /licenses/{id}/seats

readOnly

snipeit_checkout_license_seat

PUT /licenses/{license_id}/seats/{seat_id}

writeIdempotent

Accessories / Consumables / Components (8)

Tool

Endpoint

Annotations

snipeit_list_accessories

GET /accessories

readOnly

snipeit_checkout_accessory

POST /accessories/{id}/checkout

writeOnce

snipeit_checkin_accessory

POST /accessories/{id}/checkin (pivot-id)

writeOnce

snipeit_list_consumables

GET /consumables

readOnly

snipeit_checkout_consumable

POST /consumables/{id}/checkout

writeOnce

snipeit_list_components

GET /components

readOnly

snipeit_checkout_component

POST /components/{id}/checkout (to asset)

writeOnce

snipeit_checkin_component

POST /components/{id}/checkin (pivot-id)

writeOnce

Locations / Status-Labels / Maintenances (6)

Tool

Endpoint

Annotations

snipeit_list_locations

GET /locations

readOnly

snipeit_get_location

GET /locations/{id}

readOnly

snipeit_list_statuslabels

GET /statuslabels

readOnly

snipeit_get_statuslabel_assets

GET /statuslabels/{id}/assetlist

readOnly

snipeit_list_maintenances

GET /maintenances

readOnly

snipeit_create_maintenance

POST /maintenances

writeOnce

Bulk (1)

Tool

Behavior

Annotations

snipeit_bulk_checkout

Serially checks out up to 100 assets, returns a per-item success/error summary; on cancel it stops before the next item and reports aborted and not_attempted; logs each executed item (asset_id, outcome, HTTP status) to stderr

writeOnce

List tools (snipeit_list_*) accept limit?, offset?, and all?: boolean. With all: true, the tool auto-paginates up to 10 000 rows or until the result would exceed SNIPEIT_MAX_RESULT_BYTES; in that case it returns the rows collected so far with truncated: true, next_offset and total, and you continue with limit/offset.

Auto-generated tools (snipeit_gen_*)

Every operation (path and method) in the vendored Snipe-IT OpenAPI 3.1 spec is exposed as snipeit_gen_<snake_operation_id>. Each title is METHOD /path, and each description starts with METHOD /path: followed by the spec's description of the operation. The two file-upload operations (POST /hardware/{id}/files, POST /models/{id}/files) cannot upload: the vendored spec declares a JSON body, Snipe-IT expects multipart/form-data; their descriptions say so. Use these when the hand-wrapper layer doesn't cover what you need. GET tools have readOnlyHint: true; all other methods have destructiveHint: true and go through the write guard. Regenerate with npm run codegen after npm run refresh-spec.

snipeit_raw_request

Escape hatch for anything else:

{ method: "PATCH", path: "/locations/4", body: { name: "HQ" } }

Its annotations are static (destructiveHint: true, idempotentHint: false) for every method. GET requests bypass the write guard; other methods honor SNIPEIT_CONFIRM_WRITES. The path must start with a single /; absolute URLs and paths that leave SNIPEIT_API_BASE are rejected.


Resources

URI

Description

snipeit://me

Current authenticated user (GET /users/me)

snipeit://settings

Server settings (GET /settings). This endpoint is not in the vendored 8.2.0 spec; when the instance does not serve it, the resource returns {error, note} instead of failing the read

snipeit://hardware/summary

{total, by_status_label, by_category}: aggregated counts, at most 6 count requests at a time. A count that failed (for example under API throttling) is -1, and the result then carries partial: true and errors[]

Prompts

Prompt

Args

Purpose

snipeit-inventory-audit

none

Lists overdue/due audits + unassigned assets, then summarizes

snipeit-user-onboarding

user_id, optional kit

Suggests a checkout sequence for a new user

snipeit-license-health

none

Seat usage + licenses expiring within 90 days


Workflows / Recipes

Onboard a new user with a laptop

  1. Confirm the user: snipeit_get_user(id: 42)

  2. Find an available laptop: snipeit_list_hardware(category_id: 3, status_id: 5) (ready-to-deploy)

  3. Checkout: snipeit_checkout_hardware(id: 100, checkout_to_type: "user", assigned_user: 42, note: "Onboarding 2026-05-25")

Bulk-checkout a kit to one user

{
  "items": [
    { "asset_id": 100, "checkout_to_type": "user", "assigned_user": 42 },
    { "asset_id": 101, "checkout_to_type": "user", "assigned_user": 42 },
    { "asset_id": 102, "checkout_to_type": "user", "assigned_user": 42 }
  ]
}

Continues on per-item errors. Returns {summary: {total, ok, errors}, results: [...]}.

Audit overdue cleanup

  1. snipeit_list_audit_overdue(all: true): full list, auto-paginated

  2. For each: snipeit_audit_hardware(asset_tag: "...", location_id: 1, next_audit_date: "2027-05-25")

Find an asset by tag or serial

  • By asset tag: snipeit_get_hardware_by_tag(tag: "A-42") (handles URL encoding)

  • By serial: snipeit_get_hardware_by_serial(serial: "SN12345")

Discover what an LLM can do

Browse the MCP Inspector:

npm run build && npm run inspector

Write safety

The write guard is on by default: every tool with destructiveHint: true returns a redacted preview instead of executing; re-invoke it with confirm: "YES" to execute. The preview names the tool, the method, the URL, the query parameters and a redacted body (password/secret/token/api_key fields replaced with (redacted)); snipeit_bulk_checkout lists each concrete request. A preview is a normal result, not an error: its text has status: "preview" and its _meta carries "snipeit/preview": true, so a client can tell it from an executed write without parsing. Every write tool shows the full URL (SNIPEIT_API_BASE + path).

Only SNIPEIT_CONFIRM_WRITES set to false, 0, no or off (trimmed, any case) disables the guard so write tools execute directly. Unset, true/1/yes/on, an empty value or anything else keeps it on; an empty or unrecognised value also logs a warning. The effective state is logged to stderr once at startup.

confirm is set by the model, so the guard catches a model that forgets it, not a prompt injection in Snipe-IT data that adds it; human approval has to come from the MCP host or gateway. Two optional switches tighten it on the server side:

  • SNIPEIT_READ_ONLY=true refuses every write with a READ_ONLY tool error; all tools stay registered (the tool list does not change) and reads work, including snipeit_raw_request with GET.

  • SNIPEIT_REQUIRE_PREVIEW=true (with the guard on) executes confirm: "YES" only after a preview of the identical request in the last 10 minutes, once per preview, so every write is previewed first.

Independent of these settings, every write tool (hand-written, generated, snipeit_bulk_checkout and snipeit_raw_request with a method other than GET) refuses a body or query in which any value, at any depth of objects and arrays, is exactly (redacted), the placeholder of previews, SNIPEIT_REDACT_SECRETS and SNIPEIT_REDACT_PII. It returns a tool error with details.code: "REDACTED_PLACEHOLDER" and details.paths (for example body.custom_fields["BitLocker Key"].value, body[2].password, items[2].note, query.token), before the preview, SNIPEIT_READ_ONLY and the request, so an asset read with redaction on and written back unchanged cannot overwrite a recovery key with the placeholder. A string that only contains (redacted) is sent as before. Set the real value or omit the field.

Every preview, refusal and confirmed execution logs one info line (tool, method, URL), and every executed write request logs one info line with its HTTP status (no query, no body).

Snipe-IT API quirk

Snipe-IT often returns HTTP 200 with {"status":"error","messages":…} for validation errors. This server detects that envelope and surfaces the messages as a tool error (with isError: true), so callers never accidentally treat a Snipe-IT error as success. Successful envelopes ({"status":"success","payload":…}) are unwrapped automatically so tool data is the inner payload, not the outer wrapper.

Large and binary results

  • Size cap. Every tool result is limited to SNIPEIT_MAX_RESULT_BYTES (default 1 MiB). Lists ({total, rows}) keep the leading rows that fit and gain truncated: true and next_offset; the pagination hint is adjusted to match. Top-level arrays keep the leading items with a truncated object next to data. Any other oversized result is replaced by {truncated: true, size_bytes, max_result_bytes, note}. The output is always valid JSON, never a cut string.

  • Body read bound. A single HTTP response body is read up to the larger of 16 MiB and 4 times SNIPEIT_MAX_RESULT_BYTES; a larger JSON or text body fails with a RESPONSE_TOO_LARGE tool error instead of being buffered.

  • Binary downloads. Responses whose content type is not JSON, XML or text/* (for example backup zips, uploaded files, images, PDFs) are not decoded. The tool returns {binary: true, content_type, size_bytes, size_exact, filename, note}; download the file from Snipe-IT directly if you need its content.

  • Timeouts, retries, redirects. SNIPEIT_TIMEOUT_MS covers each attempt including the body read. 429 is always retried; 5xx and network errors are retried only for idempotent methods (GET, PUT, DELETE); POST and PATCH are retried only when the connection was never established (ECONNREFUSED, ENOTFOUND, EAI_AGAIN), so a write is never sent twice. Redirects are never followed. A cancelled tool call (MCP cancellation or a closed client) aborts its HTTP request and any retry backoff at once; SNIPEIT_CALL_DEADLINE_MS optionally bounds a whole call.


Develop

npm run dev               # tsx watch
npm test                  # unit; live tests only with SNIPEIT_LIVE_TESTS=1
npm run test:contract     # gateway tool contract + protocol revisions
npm run test:unit         # unit only (CI-safe)
SNIPEIT_LIVE_TESTS=1 npm run test:integration  # live; also needs SNIPEIT_API_TOKEN
npm run lint
npm run typecheck
npm run codegen           # regenerate src/tools/generated from vendor/snipe-it-rest-api.json
npm run refresh-spec      # pull latest OpenAPI spec from snipe-it.readme.io
npm run inspector         # MCP Inspector

See ARCHITECTURE.md for the layer diagram and data flow. See CONTRIBUTING.md for adding hand-wrappers, regenerating the codegen layer, and debugging.

Security

  • API token is read from SNIPEIT_API_TOKEN env only. Never hard-coded. .env is git-ignored.

  • Versions 0.1.7 and older can send the token to another host through snipeit_raw_request with an absolute URL; upgrade to 0.2.0 or newer (see CHANGELOG.md).

  • The logger and every error text returned to the model redact known secret patterns (Bearer tokens, JWTs, Authorization headers of any scheme, api_token/password/secret/token/api_key fields and query parameters, URL userinfo).

  • Tool results carry Snipe-IT data, including personal data of users (names, e-mail addresses, employee numbers), to the MCP client and its model provider. SNIPEIT_REDACT_PII=true masks those fields; see SECURITY.md.

  • Tool results can also carry secrets that Snipe-IT stores in custom fields (recovery keys, local admin passwords). SNIPEIT_REDACT_SECRETS=true masks secret-named fields and secret custom field values in tool results and resources; see SECURITY.md.

  • Every request is pinned to the SNIPEIT_API_BASE origin and path; redirects are never followed (any 3xx becomes a tool error naming the status and Location), so a misconfigured base URL (for example http:// behind an HTTPS redirect) fails loudly instead of turning a write into a silent GET.

  • All log output goes to stderr only; stdout is reserved for the MCP protocol.

  • If your token has ever been pasted into a chat or commit, rotate it.

License

MIT (see LICENSE). The vendored Snipe-IT API description is not covered by it; see NOTICE.

Available Tools

183 tools
snipeit_audit_hardwareAudit hardwareC
Destructive

POST /hardware/audit: marks an asset as audited at a location.

NameRequiredDescriptionDefault
noteNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
asset_tagYes
location_idNo
next_audit_dateNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds only that the effect is marking an asset as audited at a location, with no mention of whether prior audit dates are overwritten, what next_audit_date does, or what is returned.

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

Conciseness4/5

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

A single short sentence, front-loaded with the endpoint and action, with no wasted words. It is efficient but arguably under-specified rather than merely 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?

This is a destructive write with five parameters, 20% schema description coverage and no output schema, yet the description covers only the high-level effect. It omits the confirm-write requirement, the meaning of the optional fields, and the result of the call, leaving the agent under-equipped.

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 'confirm' is documented), and the description supplies no parameter meaning at all. It never explains note, location_id, or next_audit_date, so four of five parameters are undocumented in both places.

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 a specific verb+resource ('marks an asset as audited') plus the endpoint and location scoping, which clearly separates it from list_audit_due/list_audit_overdue and the generic update tools. It doesn't explicitly name a sibling alternative, 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?

No guidance on when to use this versus snipeit_update_hardware, snipeit_gen_hardwareaudit, or snipeit_raw_request, and no mention of prerequisites such as the SNIPEIT_CONFIRM_WRITES flag or what conditions warrant an audit. The agent must infer usage entirely.

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

snipeit_bulk_checkoutBulk checkout assetsA
Destructive

Serially checks out multiple assets. Continues on per-item errors. Returns a result array with success/error for each item. Stops before the next item when the request is cancelled; the summary then reports aborted and not_attempted.

NameRequiredDescriptionDefault
itemsYes
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

A4/5.0
Behavior5/5

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

Beyond the annotations, the description discloses serial execution, per-item error continuation, the per-item result array, and cancellation semantics with aborted/not_attempted reporting. These are material operational details for a destructive, non-idempotent write tool and do not contradict the annotations.

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

Conciseness5/5

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

The description is four tight sentences and front-loads the core batch checkout behavior. Each sentence adds operational information about errors, return shape, or cancellation without wasteful repetition.

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 batch write with no output schema, the description covers the key runtime behavior: partial failure, result reporting, and cancellation. It is slightly incomplete on item-level parameter semantics and does not mention the confirmation requirement, though that is documented in the schema.

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%: the confirm parameter is described in the schema, but the nested items fields are not documented. The description adds the notion of independent per-item checkout results, but it does not explain fields such as asset_id, checkout_to_type, or the assignment fields.

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 ('checks out multiple assets') and makes the batch scope explicit, which separates it from single-asset checkout siblings. It does not explicitly name the single-checkout alternative, so it stops short of full sibling routing guidance.

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 word 'multiple' implies the batch use case, but there is no explicit when-to-use or when-not-to-use guidance. It does not tell the agent to prefer a single checkout tool for one asset or explain prerequisites.

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

snipeit_checkin_accessoryCheckin accessory from a userB
Destructive

POST /accessories/{id}/checkin: check an accessory back in. Per Snipe-IT spec, the id here is the ID of the record in the accessories_users join table (the pivot/relationship ID), not the accessory ID.

NameRequiredDescriptionDefault
idYesID of the record in the accessories_users join table (pivot ID)
noteNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the mutation profile is known. The description adds one genuinely valuable behavioral fact — that `id` is the pivot record, not the accessory — but says nothing about what the check-in does to the user's assignment, stock counts, or the note field. No contradiction with the annotations, which correctly mark this as a non-idempotent destructive write.

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, front-loaded with the route and action, then the critical ID caveat. The second sentence overlaps with the schema's own `id` description, costing a little redundancy, but nothing is padded.

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 destructive, non-idempotent write with no output schema, the definition covers the biggest trap (pivot ID) but omits the side effects of the check-in, what happens if the assignment does not exist, and guidance on when the `confirm` field becomes mandatory. Those gaps are partially covered by the schema, leaving the definition adequate but incomplete.

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?

With 67% schema coverage, the schema already documents `id` as the pivot ID and `confirm` as the literal "YES" gate; the description only restates the pivot-ID warning for emphasis. The `note` parameter has no description in either place, so the description fails to close the remaining 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 a specific verb and resource ("check an accessory back in") plus the underlying route POST /accessories/{id}/checkin, which clearly separates it from checkout operations. It does not name the nearest siblings (snipeit_checkout_accessory, snipeit_checkin_component, snipeit_gen_accessories_checkin), so differentiation must be inferred from the resource noun.

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?

"Check an accessory back in" implies the usage context, but there is no explicit when-to-use statement, no prerequisites (does the assignment need to exist?), and no pointer to the alternative check-in tools in the sibling list. The agent must infer the selection condition from the accessory-vs-hardware wording.

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

snipeit_checkin_componentCheckin component from an assetA
Destructive

POST /components/{id}/checkin: check a quantity of a component back in. Per spec, the id here is the record ID in the components_assets join table (the pivot/relationship ID), and checkin_qty is required.

NameRequiredDescriptionDefault
idYesID of the record in the components_assets join table (pivot ID)
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
checkin_qtyYesQuantity of components to check in

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the risk profile is covered. The description adds genuinely non-obvious behavioral context: the `id` is the components_assets pivot record ID, not the component ID, which is the single most likely cause of a mis-targeted destructive write. It stops short of saying what state changes on the asset or whether the operation can be reversed.

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 that leads with the endpoint and verb, then spends its remaining words only on the highest-risk detail (pivot ID semantics). No filler.

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 destructive mutation with full annotation coverage, complete schema descriptions and no output schema, the description supplies the one thing an agent could not infer: the pivot-ID targeting rule. It leaves return behavior and post-checkin asset state unstated, which is acceptable but not exhaustive.

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%, so the baseline is 3. The description's note about `id` being the pivot ID duplicates the schema's own parameter description almost verbatim, and the 'checkin_qty is required' remark is already encoded in the required array, so it adds little 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 names a specific verb ('check a quantity of a component back in') and pins it to the endpoint POST /components/{id}/checkin, so the resource and direction of the operation are unambiguous. It does not distinguish itself from the near-identical sibling snipeit_gen_componentsidcheckin or from snipeit_checkout_component, 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 Guidelines3/5

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

Usage is only implied by the verb 'check in' — the agent can infer this is the inverse of checkout, but there is no explicit statement of when to prefer this over snipeit_gen_componentsidcheckin or snipeit_raw_request. No prerequisites (e.g. that the component must currently be checked out to an asset) are stated.

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

snipeit_checkin_hardwareCheckin hardwareD
Destructive

POST /hardware/{id}/checkin

NameRequiredDescriptionDefault
idYes
nameNoNew asset name to set on checkin
noteNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
status_idNoStatus label to set on checkin (the spec lists it as required; the server decides)
location_idNo

TDQS

D1.3/5.0
Behavior1/5

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

The annotations already mark this operation as destructive, non-idempotent, open-world, and not read-only, so the agent knows it mutates data. The description adds nothing about what is destroyed or reset (assignment, status, location, user), whether it needs confirmation, or how errors surface, despite these being the key concerns for a destructive write.

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 text is short but under-specified rather than concise; a bare route is not an earned sentence. There is no front-loaded explanation of the action, only an endpoint string.

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 destructive, non-idempotent write tool with six parameters and no output schema, the definition should describe effects, required state, and confirmation requirements. It supplies only an endpoint path, leaving an agent unable to call it safely or correctly.

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?

There are 6 parameters with only 50% schema description coverage, so the description needs to fill in gaps for id, note, and location_id. It supplies none of that, and it also gives no meaning for the parameters it could clarify, such as status_id or the confirm field, beyond what the schema already states.

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 is only the raw HTTP route "POST /hardware/{id}/checkin", which paraphrases the name and title without explaining what a checkin does to an asset. An agent can infer a mutation on a hardware record by ID, but nothing distinguishes the real semantics from sibling tools such as snipeit_gen_hardware_checkin or snipeit_checkin_accessory.

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

Usage Guidelines1/5

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

No guidance on when to use this versus checkin alternatives (snipeit_gen_hardware_checkin, snipeit_checkout_hardware, snipeit_audit_hardware) or when not to. The description gives no preconditions, no alternatives, and no indication of what state the asset must be in.

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

snipeit_checkout_accessoryCheckout accessory to a userA
Destructive

POST /accessories/{id}/checkout: check an accessory out to a user. Note: per Snipe-IT spec, the target user field is assigned_user (not assigned_to).

NameRequiredDescriptionDefault
idYes
noteNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
checkout_qtyNoQuantity to check out (default 1)
assigned_userYesUser ID to check the accessory out to

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the mutation and irreversibility profile is covered. The description adds the concrete endpoint and a spec-compliance note about field naming, but says nothing about the confirm="YES" gating behavior, stock-depletion effects, or failure modes of a non-idempotent destructive write.

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 filler. The action and endpoint are front-loaded, and the caveat follows as a short parenthetical note.

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 destructive, non-idempotent write with no output schema, the description covers the core action and the field-name pitfall but omits the confirm-flag workflow and expected behavior on insufficient stock or invalid user. Adequate to call correctly, but not complete for a destructive operation.

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 60%, with `id` and `note` undocumented in the schema, so the description must add value. It does so meaningfully by clarifying that the target-user parameter is named `assigned_user` per the Snipe-IT spec rather than `assigned_to`, preventing a concrete and likely invocation error that the schema itself does not warn about.

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 ("check an accessory out to a user") and pins the exact REST endpoint POST /accessories/{id}/checkout. The resource name cleanly separates it from the many sibling checkout tools (hardware, consumable, component, license seat), though it never names or contrasts those siblings explicitly.

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

Usage Guidelines3/5

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

Usage is only implied by the verb and resource; there is no statement of when to prefer this over snipeit_checkout_consumable/snipeit_checkout_component or the generic snipeit_raw_request, and no prerequisites (e.g. accessory must have available stock) are given. The one piece of guidance present is the field-naming caveat, which is parameter-level rather than usage-level.

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

snipeit_checkout_componentCheckout component to an assetC
Destructive

POST /components/{id}/checkout: check a quantity of a component out to an asset. Per spec, assigned_to is the asset ID and assigned_qty is required.

NameRequiredDescriptionDefault
idYesID of the component to check out
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
assigned_toYesAsset ID to check the component out to
assigned_qtyYesQuantity of components to check out

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say stock is decremented irreversibly, what happens when assigned_qty exceeds available quantity, or that the confirm gate may block the write.

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

Conciseness4/5

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

Two sentences, front-loaded with the route and the action, with no filler. Slightly redundant since the parameter restatement duplicates the schema.

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 destructive, non-idempotent write with no output schema and no documented error behavior, the description is only minimally sufficient. The annotations cover the safety flags, but nothing tells the agent what a failed checkout looks like or how stock limits behave.

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 all four parameters are already documented, including the confirm constant. The description only restates that assigned_to is the asset ID and assigned_qty is required, adding no syntax, constraint or edge-case detail beyond the schema. Baseline 3 applies.

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 a specific verb and resource ('check a quantity of a component out to an asset') and names the HTTP route, so an agent can tell this apart from the checkin and accessory-checkout siblings. It is clear but does not explicitly contrast with snipeit_checkin_component or snipeit_gen_componentsidcheckout.

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 when-to-use guidance, no prerequisites (component must have sufficient available stock), and no mention of alternatives such as snipeit_gen_componentsidcheckout or snipeit_checkout_accessory. The usage is only inferable from the verb 'check out'.

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

snipeit_checkout_consumableCheckout consumable to a userC
Destructive

POST /consumables/{id}/checkout: check a consumable out to a user.

NameRequiredDescriptionDefault
idYes
noteNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
assigned_toYesUser ID to check the consumable out to
checkout_qtyNoQuantity to check out

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds only the endpoint path and repeats that it is a checkout; it says nothing about stock depletion, what happens when quantity is unavailable, or that the 'confirm: YES' gate may be enforced. That is the kind of context that would earn credit above the annotation baseline.

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?

One short sentence, front-loaded with the operation and followed by the endpoint. Efficient with no filler, though the terseness is part of why the behavioral and parameter dimensions are thin.

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 destructive, non-idempotent write with 5 parameters, two of them schema-undocumented, and no output schema. An agent needs to know the effect on stock levels, failure modes, and how the confirm gate works; none of that is in the description, leaving it incomplete for a mutation 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 coverage is only 60%: assigned_to and checkout_qty are documented in the schema, while id and note are not documented anywhere, and the confirm gate is documented only inside the schema. The description adds no parameter meaning at all, so it fails to compensate for the coverage gap on a 5-parameter write tool.

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 pairs a specific verb ('check a consumable out') with a specific resource ('a user') and even gives the underlying REST endpoint, so it is distinguishable from checkout_hardware, checkout_accessory and checkout_component. It stops short of differentiating itself from the near-duplicate snipeit_gen_consumablesidcheckout sibling, which is the one ambiguity an agent faces.

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 pick this over the duplicate gen_ consumables checkout endpoint, no prerequisites stated, and no note that consumables differ from accessories in that quantities are decremented from stock. The agent must infer everything about applicability 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.

snipeit_checkout_hardwareCheckout hardware to user / location / assetC
Destructive

POST /hardware/{id}/checkout. Provide checkout_to_type plus the matching target id.

NameRequiredDescriptionDefault
idYes
nameNo
noteNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
status_idNoStatus label to set on checkout (the spec lists it as required; the server decides)
checkout_atNoISO date (YYYY-MM-DD)
assigned_userNo
assigned_assetNo
checkout_to_typeYes
expected_checkinNo
assigned_locationNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered externally. The description adds nothing beyond that: it doesn't say what state change occurs (status label, assignment record), that a confirm token may be required, or how failures (already checked out, invalid target) surface.

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, front-loaded with the endpoint and followed by the key input rule; nothing is padded or redundant. It is efficient, though efficiency here partly reflects under-specification rather than disciplined editing.

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?

An 11-parameter destructive write with no output schema and low schema coverage demands far more: which target field pairs with which type, what confirm does, and what a successful checkout means for the asset. The definition leaves most of this to 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?

Schema description coverage is only 27% across 11 parameters, so the description needs to compensate and largely doesn't. It does hint at the checkout_to_type/target-id pairing, but never names which of assigned_user, assigned_asset or assigned_location corresponds to which enum value, and says nothing about status_id, note, checkout_at or expected_checkin.

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

Purpose3/5

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

The description states the endpoint 'POST /hardware/{id}/checkout', which combined with the title makes the verb+resource clear: check out a piece of hardware. However, it is essentially a REST path restatement and does nothing to distinguish this from close siblings like snipeit_bulk_checkout or snipeit_checkin_hardware beyond the implicit difference in the path verb.

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?

'Provide checkout_to_type plus the matching target id' is parameter-shape guidance, not usage guidance. There is no statement of when to use this versus snipeit_bulk_checkout for multiple assets, nor any prerequisite about the hardware needing to be available/not already checked out.

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

snipeit_checkout_license_seatCheckout (assign) a license seatC
DestructiveIdempotent

PUT /licenses/{license_id}/seats/{seat_id}: assign a seat to a user or asset.

NameRequiredDescriptionDefault
noteNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
seat_idYes
asset_idNoAsset ID to assign this seat to
license_idYes
assigned_toNoUser ID to assign this seat to

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true and readOnlyHint=false, so safety is partly covered. However, for a destructive mutation the description never explains what is overwritten if the seat is already assigned, whether a seat is consumed/reserved, or that only one of the asset/user targets is valid — all key side effects beyond the annotation profile.

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?

One sentence, front-loaded with the endpoint and then the purpose; nothing wasted. Slight hit for encoding the raw path first, which is less useful to an agent than the effect, but overall 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?

No output schema, so the description need not cover returns, but for a 6-parameter destructive mutation it omits the user/asset mutual exclusivity, reassignment/overwrite behavior, and confirm gating context (left to the schema). Adequate but with clear behavioral gaps.

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%: confirm, asset_id and assigned_to carry descriptions, but license_id, seat_id and note do not. The description fills part of the gap by indicating the seat is assigned to 'a user or asset', implying assigned_to/asset_id are alternative targets, but it does not state they are mutually exclusive nor clarify the undocumented 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?

States a specific verb ('assign') and resource ('a seat' of a license) plus the target ('user or asset'), and the endpoint makes it concrete. It does not name or distinguish itself from the raw sibling snipeit_gen_put_licensesidseatsseat_id, so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

No when-to-use guidance, no exclusions, and no mention of the raw PUT sibling as an alternative. The agent must infer that this is the high-level tool for assigning a seat and that snieit_gen_put_* is the raw equivalent.

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

snipeit_create_hardwareCreate hardwareC
Destructive

POST /hardware: required: asset_tag, status_id, model_id (per Snipe-IT spec).

NameRequiredDescriptionDefault
bodyYes
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already disclose destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered externally. The description adds only the required body fields and says nothing about irreversible side effects, validation failures, permission requirements, or what a successful creation returns.

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?

It is a single telegraphic line with no filler, so nothing is wasted, but the compression comes at the cost of clarity — it reads like an API cheat sheet rather than agent-facing guidance, and the required-field list is buried after an endpoint stub.

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 destructive, non-idempotent creation tool whose body schema is fully free-form and which has no output schema, three required field names are not enough. The description omits the scope of the body object, the confirm gate behavior, error conditions, and anything about the created record's identifier on return.

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?

This is the description's main contribution: the schema types `body` as an unconstrained object with additionalProperties {}, so the only source of required-field knowledge is the text listing asset_tag, status_id, and model_id. That materially compensates for the 50% schema coverage, though it omits optional but commonly needed fields and does not mention the `confirm` parameter.

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

Purpose3/5

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

The description names the endpoint (POST /hardware) and the title says "Create hardware," so the operation is inferable. However, it never states in its own words that it creates a hardware asset, and it does not distinguish itself from the near-duplicate sibling snipeit_gen_hardware_create or from snipeit_raw_request.

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 snipeit_gen_hardware_create or snipeit_raw_request, and no mention of prerequisites such as valid status_id/model_id values or the SNIPEIT_CONFIRM_WRITES gate. The agent must infer usage entirely.

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

snipeit_create_maintenanceCreate asset maintenanceA
Destructive

POST /maintenances: schedule or record a maintenance event. Required: asset_id, asset_maintenance_type, title, start_date (YYYY-MM-DD). title is sent as both 'name' (Snipe-IT 8.x) and 'title' (older servers). Note: supplier_id is required by the Snipe-IT 8.2.0 API; pass it unless your server accepts it missing.

NameRequiredDescriptionDefault
costNoCost of the maintenance
notesNo
titleYesShort title / description of the maintenance event
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
asset_idYesID of the asset being maintained
start_dateYesStart date in YYYY-MM-DD format
supplier_idNoID of the supplier carrying out the maintenance (required by the Snipe-IT 8.2.0 API)
completion_dateNoCompletion date in YYYY-MM-DD format
asset_maintenance_typeYesMaintenance type, one of 'Maintenance', 'Repair', 'PAT Test', 'Upgrade', 'Hardware Support', 'Software Support'

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the bar is lower. The description still adds real non-obvious behavior: title is dual-sent as 'name' for Snipe-IT 8.x and 'title' for older servers, and supplier_id is required by the 8.2.0 API — server-version quirks an agent could not infer from schema or annotations.

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 sentences, front-loaded with endpoint and required fields, then the two version-specific caveats. Mostly waste-free, though restating start_date's YYYY-MM-DD format duplicates the schema description.

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 9-parameter mutation tool with no output schema and annotations already covering the safety profile, this covers required fields, formats, and version pitfalls well. Minor gap: it does not say what comes back on success (e.g., the created maintenance record) or whether the asset's status changes as a side effect of destructiveHint.

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 89%, so a baseline of 3 applies. The description goes beyond it by explaining the dual name/title transmission for the 'title' parameter and the conditional requirement status of supplier_id across server versions, which is exactly the kind of semantic detail the schema cannot express.

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 a specific verb and resource ('POST /maintenances: schedule or record a maintenance event') and lists the required fields, so the agent knows exactly what this creates. It is clearly distinct from the read-only snipeit_list_maintenances sibling, though it never names that alternative explicitly.

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 by the endpoint and required-field list, and there is a conditional hint ('pass supplier_id unless your server accepts it missing'), which is genuinely useful. But there is no explicit statement of when to choose this tool over snipeit_raw_request or snipeit_list_maintenances, and no exclusions or prerequisites (e.g., asset state) are given.

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

snipeit_delete_hardwareDelete hardwareA
DestructiveIdempotent

DELETE /hardware/{id}: soft-deletes the asset; restore it with snipeit_gen_hardwareidrestore (POST /hardware/{id}/restore).

NameRequiredDescriptionDefault
idYes
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known. The description adds genuinely new context by disclosing that the delete is soft and reversible via a specific restore endpoint — information not present in annotations. It stops short of mentioning the confirm-write gate or permission requirements.

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

Conciseness5/5

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

A single sentence that front-loads the endpoint and effect, then the recovery path. No filler, and the most decision-relevant fact (soft delete) comes first.

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 two-parameter destructive tool with no output schema, the description covers the essential effect and reversibility. It omits the SNIPEIT_CONFIRM_WRITES confirmation requirement and what the response contains, but those gaps are modest given the schema documents confirm.

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%: the confirm parameter is fully documented in the schema, but id has no description. The description at least shows id as a path parameter, but adds no format, validity, or lookup guidance (e.g. that id is the internal asset ID, not the asset tag). Baseline 3 given partial 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?

States a specific verb+resource (DELETE /hardware/{id}) and immediately qualifies the semantics as a soft delete, which is exactly the distinction an agent needs. It also names the restore counterpart, so it is separable from the many sibling delete/update endpoints.

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 clear context for use and explicitly names the recovery alternative (snipeit_gen_hardwareidrestore with its path). It does not address when to prefer this over the sibling snipeit_gen_hardware_delete or snipeit_gen_hardware_partial_update, so the routing guidance is incomplete rather than explicit.

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

snipeit_gen_accessoriesGET /accessoriesC
Read-onlyIdempotent

GET /accessories: Return a listing of accessories. Generated from Snipe-IT OpenAPI operation accessories.

NameRequiredDescriptionDefault
sortNoSpecify the column name you wish to sort by
limitNoSpecify the number of results you wish to return
orderNoSpecify the order (asc or desc) you wish to order by on your sort column
expandNoWhether to include detailed information on categories, etc (true) or just the text name (false)
offsetNoOffset to use
searchNoA text string to search the assets data for
order_numberNoReturn only assets associated with a specific order number

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no mention of pagination defaults, result caps, or whether the listing is paginated when limit/offset are omitted.

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?

Very short, but the second sentence ('Generated from Snipe-IT OpenAPI operation accessories') is boilerplate metadata that duplicates the title and does not earn its place. No waste beyond that, but also no front-loaded substance.

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 exists, so the description should convey something about the shape of the listing or its pagination behavior, and it does not. For a 7-parameter endpoint in a large sibling set, the description leaves the agent without the context needed to use it confidently over the alternatives.

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%, so all 7 parameters (sort, limit, order, expand, offset, search, order_number) are already documented in the schema. The description adds nothing on parameter semantics, so the baseline of 3 applies.

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 restates the name and title: 'GET /accessories: Return a listing of accessories' adds no more than the tool name already conveys. It does not distinguish this tool from siblings such as snipeit_list_accessories or snipeit_gen_accessories_1, which appear to serve the same resource.

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 versus the several near-identical accessory-listing siblings, nor any prerequisites or exclusions. The agent gets no help choosing among ~10 accessory endpoints.

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

snipeit_gen_accessories_1POST /accessoriesC
Destructive

POST /accessories: Create a new accessory. Generated from Snipe-IT OpenAPI operation accessories-1.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, but the description adds nothing about consequences, required permissions, or reversibility of a destructive write. It also never mentions the `confirm` safety gate, which is exactly the kind of behavior an agent must know about before invoking a destructive call.

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?

It is short and front-loaded with the verb+resource, but the 'Generated from Snipe-IT OpenAPI operation accessories-1' clause is pure filler that consumes roughly half the text without informing the agent.

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?

A destructive nested-body create with ten undocumented fields, no output schema, and a confirmation mechanism deserves far more description. The agent has no idea what a successful response looks like or what the body requirements really mean.

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 50%, and the nested body defines ten fields (name, qty, category_id, etc.) with no meaning added by the description. Nothing explains field semantics, required-vs-optional intent, or how `confirm` interacts with SNIPEIT_CONFIRM_WRITES.

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

Purpose3/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 ('Create a new accessory'), which is enough to know it is a create operation. However, with dozens of near-identical `snipeit_gen_accessories*` siblings, it offers no differentiation beyond the resource name, and the 'Generated from Snipe-IT OpenAPI operation accessories-1' tail adds no distinguishing 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 versus `snipeit_raw_request` or the other accessory endpoints, nor any prerequisite context. 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.

snipeit_gen_accessories_checkinPOST /accessories/{id}/checkinC
Destructive

POST /accessories/{id}/checkin: Checkin an accessory from a user. Generated from Snipe-IT OpenAPI operation accessories-checkin.

NameRequiredDescriptionDefault
idYesThis is the ID of the accessory+user relationships in the accessories_users table
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is known. The description adds nothing beyond that: no statement about what state is destroyed (the accessory-user assignment), whether the user must exist, or what happens on a repeat call. For a destructive mutation, this is a bare restatement.

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?

Short and front-loaded, but it contains redundancy: it repeats the endpoint path already in the title and appends a generator provenance note ("Generated from Snipe-IT OpenAPI operation accessories-checkin") that provides no decision value to an agent.

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?

A destructive, non-idempotent write with no output schema and many near-duplicate checkin siblings. The description does not explain consequences, expected post-state, or which of the several checkin tools applies here, leaving the agent to infer routing from names alone.

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%, including the key clarification that `id` is the accessories_users relationship ID and that `confirm` must be "YES". Per the baseline rule, full schema coverage yields a 3 when the description adds no parameter meaning of its own.

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

Purpose3/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 ("Checkin an accessory from a user"), which is clearer than the raw endpoint path. However, it is essentially a restatement of the path in the title, and it does not distinguish this operation from sibling tools like snipeit_checkin_accessory or snipeit_gen_accessories_checkin. It also omits the crucial detail that the `id` is a relationship ID, not an accessory ID.

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 versus the other accessory checkin endpoints in the sibling list. There is no mention of prerequisites (e.g., the accessory must currently be checked out, the confirm flag required by policy), and no exclusions or alternative routing.

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

snipeit_gen_accessories_checkoutPOST /accessories/{id}/checkoutC
Destructive

POST /accessories/{id}/checkout: Check an accessory out to a user. Generated from Snipe-IT OpenAPI operation accessories-checkout.

NameRequiredDescriptionDefault
idYes
bodyNo
limitNo
offsetNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered structurally. The description adds nothing beyond that — it does not say what gets consumed from inventory, whether the accessory must have available stock, or that the confirm token may be required for the write.

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

Conciseness3/5

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

It is short and front-loaded, but a third of the text is boilerplate ('POST /accessories/{id}/checkout', 'Generated from Snipe-IT OpenAPI operation...') that duplicates the title and adds no decision-relevant 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?

For a destructive mutation with a nested body object, 20% schema coverage, and no output schema, the description is too thin. It omits stock/availability requirements, the confirm-write gate, and expected outcome, all of which an agent needs before invoking a destructive checkout.

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 the confirm parameter is documented), so the description carries the burden of compensating — and it does not. It never explains that the nested body requires assigned_user, nor what note or checkout_qty mean, leaving four of five parameters undocumented in both places.

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 a specific verb and resource: 'Check an accessory out to a user', which is unambiguous about what the tool does. However, it offers no differentiation from sibling tools that perform the same action (e.g. snipeit_checkout_accessory), and the leading HTTP path/method is redundant with the title.

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 versus snipeit_checkout_accessory or the other generated accessory endpoints, and no prerequisites are mentioned. The agent must infer usage entirely from the name and path.

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

snipeit_gen_accessoriesidGET /accessories/{id}C
Read-onlyIdempotent

GET /accessories/{id}: Get the details on an accessory. Generated from Snipe-IT OpenAPI operation accessoriesid.

NameRequiredDescriptionDefault
idYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing beyond that – it says nothing about what a 404 means, whether the record includes checkout/user data, or any auth requirement. The trailing 'Generated from Snipe-IT OpenAPI operation accessoriesid' is provenance noise, not behavior.

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?

It is short and front-loaded, which is good. But one of the three clauses is auto-generation boilerplate that carries no decision-making value, so the description is partly wasted space on a tool that had little to say.

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 single-parameter read-only lookup with annotations covering side effects and no output schema to explain, the description is close to sufficient – an agent knows to pass an accessory id and gets the record back. The remaining gap is the meaning of the id and not-found behavior.

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 0% and the single 'id' parameter has no description or constraints in the schema. The description only restates the path template ({id}); it does not clarify that id is the numeric accessory record ID (as opposed to asset tag or model ID), which is exactly the ambiguity an agent would need resolved here.

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

Purpose3/5

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

States a concrete verb and resource ('Get the details on an accessory') and the HTTP route, so the action is unambiguous. However, the sibling set contains many near-identical operations (snipeit_gen_accessoriesid_1/_2/_3, snipeit_gen_accessoriesidcheckedout), and nothing in the description explains how this one differs from them.

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 versus snipeit_list_accessories or snipeit_raw_request, and no precondition such as needing a valid accessory ID. The agent must infer the use case entirely from the name and route.

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

snipeit_gen_accessoriesid_1PUT /accessories/{id}C
DestructiveIdempotent

PUT /accessories/{id}: Updates an accessory. Generated from Snipe-IT OpenAPI operation accessoriesid-1.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=true. The description adds no behavioral detail beyond 'Updates an accessory' and does not mention the confirm requirement, required body fields, side effects, or permissions.

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

Conciseness3/5

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

The purpose is front-loaded in the first sentence and the description is short. However, the second sentence about being generated from the Snipe-IT OpenAPI operation is boilerplate that does not help an agent select or invoke the tool.

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 destructive mutation with a nested required body and no output schema, yet the description only says it updates an accessory. It omits the confirm workflow, required payload structure, and any distinction from sibling accessory tools.

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%, with the nested body object containing many undocumented fields. The description does not explain the id path parameter, the body payload, or the confirm parameter, so it does not 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 states a specific verb and resource: PUT /accessories/{id} updates an accessory. It is clear what the tool does, but it does not distinguish this update operation from the many sibling accessory endpoints such as get, delete, checkout, or checkin.

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 when-to-use guidance, no prerequisites, and no alternatives. An agent must infer from the name and annotations that this is the mutation path for an existing accessory.

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

snipeit_gen_accessoriesid_2PATCH /accessories/{id}C
DestructiveIdempotent

PATCH /accessories/{id}: Selectively updates an accessory. Generated from Snipe-IT OpenAPI operation accessoriesid-2.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered elsewhere. The description adds genuine value with 'Selectively updates', signaling partial-update semantics where omitted fields are left untouched. It stops short of stating side effects (e.g. changing qty affects available stock) or the confirmation requirement.

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 first sentence is efficient and front-loaded, but the second — 'Generated from Snipe-IT OpenAPI operation accessoriesid-2' — is generator boilerplate that consumes roughly half the text without adding information an agent can act on.

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 destructive mutation with an 11-field nested body, a conditional confirmation parameter, and no output schema, the description is far too thin. An agent gets no picture of what the body fields do, what the write affects, or what a successful response looks like.

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 `confirm` is documented, and the entire nested `body` object (qty, name, company_id, category_id, location_id, supplier_id, purchase_cost, etc.) carries types but no meaning. The description contributes nothing about any parameter, so 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.

Purpose4/5

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

The description names a specific verb and resource — 'Selectively updates an accessory' — and PATCH semantics are implied by 'selectively'. However, it does nothing to differentiate itself from the crowded accessory sibling set (snipeit_gen_accessoriesid_1, _3, _checkedout, _checkout, _checkin), whose suffixes give an agent no clue which is the partial-update endpoint.

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 versus the other accessory endpoints (e.g. a full-update or raw-request sibling), nor any mention of the SNIPEIT_CONFIRM_WRITES gate that governs whether the call will actually apply. The agent must infer everything from the name and schema.

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

snipeit_gen_accessoriesid_3DELETE /accessories/{id}C
DestructiveIdempotent

DELETE /accessories/{id}: Deletes an accessory. Generated from Snipe-IT OpenAPI operation accessoriesid-3.

NameRequiredDescriptionDefault
idYes
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered externally. The description adds nothing beyond that — no mention of permanence vs. soft-delete/restore, no cascade behavior for assigned accessories, no auth requirements. The trailing 'Generated from Snipe-IT OpenAPI operation' is boilerplate, not disclosure.

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?

Very short and front-loaded, which is good, but the second clause is pure generator boilerplate that earns no place. It is under-informative rather than overly verbose.

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 destructive, irreversible-sounding delete with a non-obvious confirmation parameter and no output schema, the description should explain the confirm guard, consequences for accessories currently checked out, and expected response. None of this is present.

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 50%; the 'confirm' parameter is well documented in the schema, but 'id' has no description in either location. The description could have clarified that id is the accessory record id (not an asset/user id) and that confirm gates destructive writes, but says nothing.

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 names a specific verb and resource ('Deletes an accessory'), so an agent knows exactly what the call does. It does not, however, differentiate itself from the many other delete/accessory sibling tools (e.g. snipeit_gen_accessoriesid, _1, _2), leaving the agent to infer this is the DELETE variant from the name alone.

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

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 versus listing accessories or the other accessory endpoints, and no prerequisites are stated. Critically, nothing tells the agent about the confirm=YES guard, so a caller may be surprised by a refused write.

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

snipeit_gen_accessoriesidcheckedoutGET /accessories/{id}/checkedoutC
Read-onlyIdempotent

GET /accessories/{id}/checkedout: Show which users a specific accessory has been checked out to. Generated from Snipe-IT OpenAPI operation accessoriesidcheckedout.

NameRequiredDescriptionDefault
idYes
limitNo
offsetNo

TDQS

C2.9/5.0
Behavior3/5

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

The annotations (readOnlyHint, idempotentHint, destructiveHint false, openWorldHint) already declare the safety profile, so the description only needs to add context. It adds the useful detail that the return is the set of users a given accessory was checked out to, but it never addresses the pagination behavior implied by limit/offset.

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 core sentence is clear and front-loaded, but the path restatement and the 'Generated from Snipe-IT OpenAPI operation accessoriesidcheckedout' boilerplate add no value for an agent deciding how to call the tool.

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 tool this is roughly complete on safety and intent, but with no output schema and two undocumented pagination parameters, the description should have covered the limit/offset semantics that the schema leaves bare.

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 0% and the description only implicitly touches the required `id` ('a specific accessory'). The `limit` and `offset` parameters are entirely undocumented in both schema and description, leaving the reader unaware of pagination control.

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 gives a specific verb+resource: 'Show which users a specific accessory has been checked out to'. An agent can distinguish this from get_user_accessories (the inverse direction). It doesn't explicitly name competing siblings, so it stays below 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 when-to-use / when-not guidance. With siblings like snipeit_get_user_accessories, snipeit_list_accessories, and snipeit_checkout/checkin_accessory available, the reader must infer the selection criterion from the purpose alone.

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

snipeit_gen_backups_1GET /settings/backupsC
Read-onlyIdempotent

GET /settings/backups. Generated from Snipe-IT OpenAPI operation backups-1.

NameRequiredDescriptionDefault
sortNoColumn to sort by (not declared in the spec for this operation, added by codegen)
limitNoPage size (not declared in the spec for this operation, added by codegen)
orderNoSort order (not declared in the spec for this operation, added by codegen)
offsetNoRows to skip (not declared in the spec for this operation, added by codegen)
searchNoText search (not declared in the spec for this operation, added by codegen)

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the definition adds nothing about behavior. It omits relevant operational context such as Snipe-IT's token/permission requirements for settings endpoints or pagination defaults.

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?

Only two short sentences, but brevity here reflects under-specification rather than economy. The second sentence is codegen provenance metadata that does not help an agent decide or invoke correctly.

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 list endpoint with no output schema, the description should say what is returned (backup file entries) and note any admin-only access constraint. Neither is present, leaving the agent with only the raw URL path.

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% and each parameter carries its own explanation (including the note that these were added by codegen). The description adds nothing beyond the schema, so baseline 3 applies.

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

Purpose2/5

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

"GET /settings/backups" restates the title and tool name in HTTP terms. It identifies the resource path (backups) and implies a read, but adds no plain-language statement of what the tool returns or what a 'backup' record contains.

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

Usage Guidelines1/5

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

No guidance on when to use this versus alternatives. Given siblings like snipeit_gen_backupsdownloadfile and the generic snipeit_raw_request, an agent gets no routing signal at all.

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

snipeit_gen_backupsdownloadfileGET /settings/backups/download/{file}C
Read-onlyIdempotent

GET /settings/backups/download/{file}: /settings/backups/download/:file. Generated from Snipe-IT OpenAPI operation backupsdownloadfile.

NameRequiredDescriptionDefault
fileYesThe short name of the file to download

TDQS

C2.3/5.0
Behavior2/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 safety is covered. The description adds nothing beyond that boilerplate — critically, it never says the response is a binary file payload rather than JSON, which is the one behavioral fact an agent most needs here.

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?

It is short, but the second sentence ('Generated from Snipe-IT OpenAPI operation backupsdownloadfile') is pure generator noise that repeats the first sentence's route with no added information. Nothing is front-loaded beyond the path itself.

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 file-download endpoint with no output schema, the description should explain that the call streams back a backup archive and note the permission requirement; both are absent. An agent has to guess at return type and authorization from the URL alone.

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% and the single 'file' parameter is documented as 'The short name of the file to download'; the description adds no further semantics such as acceptable filename format or where the name comes from. With full schema coverage, baseline 3 is the correct ceiling for a description that contributes nothing extra.

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 is a restatement of the route path and the operationId ('backupsdownloadfile'), so the resource (backups) and verb (download) are only inferable from the URL tokens, not articulated. It never says in plain language that it retrieves a generated Snipe-IT backup file, and it draws no distinction from configuration/backup siblings such as snipeit_gen_backups_1.

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 statement of when to use this endpoint, no prerequisite (e.g. admin permission needed to download backups), and no pointer to any alternative sibling tool. Nothing tells an agent whether this is the right call versus snipeit_gen_backups_1 or snipeit_raw_request.

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

snipeit_gen_categories_1GET /categoriesC
Read-onlyIdempotent

GET /categories: List categories. Generated from Snipe-IT OpenAPI operation categories-1.

NameRequiredDescriptionDefault
nameNoCategory name
sortNo
limitNoNumber of results to return
orderNoSort order (asc or desc)
offsetNoOffset number (useful in pagination)
searchNoSearch string
category_idNoID number of the category you'd like to filter by
category_typeNoType of category
checkin_emailNo
use_default_eulaNo
require_acceptanceNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description contributes nothing further — no pagination behavior, no auth requirements, no note on default result limits — beyond noting it was auto-generated from the Snipe-IT OpenAPI spec.

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?

It is short and front-loaded, which is good, but the second sentence ('Generated from Snipe-IT OpenAPI operation categories-1') is metadata that consumes space without informing the caller.

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?

With no output schema, 11 optional filter/pagination parameters, and no annotations beyond the safety flags, the description should explain what a listing returns and how limit/offset/search behave. It does none of that, leaving an agent to infer behavior from the schema alone.

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?

Eleven parameters exist with only 64% schema description coverage, yet the description mentions none of them. Fields like 'sort' (no description) and the boolean filters (checkin_email, use_default_eula, require_acceptance) get no clarifying meaning from the prose, so the coverage gap is left unfilled.

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

Purpose3/5

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

The description says 'List categories', a recognizable verb+resource, but it is essentially a restatement of the title 'GET /categories'. It gives no way to tell this apart from the numerous sibling category endpoints (snipeit_gen_categories_2, snipeit_gen_categoriesid, etc.) or to know what the listing contains.

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 endpoint versus the sibling category or raw-request tools, and no mention of preconditions or typical scenarios. The only hint is the HTTP verb in the title.

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

snipeit_gen_categories_2POST /categoriesC
Destructive

POST /categories: Create a Category. Generated from Snipe-IT OpenAPI operation categories-2.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is covered structurally. The description adds nothing beyond them: it does not explain why a create is flagged destructive (e.g., whether it can fail partially), what happens to the required confirm string, or what the response contains. With annotations present the bar is lower, but zero added context earns a 2.

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?

It is short and front-loaded, but a third of the text is provenance metadata ("Generated from Snipe-IT OpenAPI operation categories-2") that does not help invocation. Efficient in length, weak in payoff.

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 mutating, nested-body tool with no output schema and only 50% parameter description coverage, so the description carries substantial burden. It omits the confirm-write gate, required fields, return behavior, and permission requirements, leaving real gaps for an agent to fill by 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?

Schema description coverage is only 50%, and the description supplies no parameter information at all. The nested body with required name/category_type and the confirm gate are entirely left to the schema, so the description fails to compensate for the coverage gap on a nested-object tool.

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

Purpose3/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 ("Create a Category"), which is better than a title restatement. However, it offers no differentiation from the many sibling category tools (snipeit_gen_categories_1, snipeit_gen_categoriesid, etc.), so an agent cannot tell why this one applies versus the others. Minimum-viable purpose only.

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 sibling category endpoints, no prerequisites, and no exclusions. The only implied usage comes from the word "Create" in the description; nothing else routes the agent.

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

snipeit_gen_categoriesidPUT /categories/{id}C
DestructiveIdempotent

PUT /categories/{id}: Update a Category. Generated from Snipe-IT OpenAPI operation categoriesid.

NameRequiredDescriptionDefault
idYesCategory ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is known. The description adds nothing beyond them: it does not explain what gets overwritten by an update, whether omitted fields are cleared, or that a confirmation string may be required.

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?

It is short and front-loaded, but the second sentence ("Generated from Snipe-IT OpenAPI operation categoriesid") is boilerplate that consumes half the description without informing the agent.

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 destructive mutation with a nested body object, a conditional confirm parameter, and no output schema. The description covers none of that, leaving the agent dependent on raw schema inspection for a write operation.

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%, and the description adds no meaning beyond the schema. It never mentions the required body fields (name, category_type), the category_type enum values, or the conditional confirm parameter, which are the details an agent most needs.

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

Purpose3/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 ("Update a Category"), which is clearer than a tautology. However, it offers no differentiation from the numerous sibling category tools (snipeit_gen_categories_1, snipeit_gen_categoriesid_1/_2/_3), so an agent cannot tell which category operation this is without opening the schema.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, no prerequisites, and no mention of the confirm parameter requirement. The only implied guidance is the word "Update".

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

snipeit_gen_categoriesid_1PATCH /categories/{id}C
DestructiveIdempotent

PATCH /categories/{id}: Update a Category. Generated from Snipe-IT OpenAPI operation categoriesid-1.

NameRequiredDescriptionDefault
idYesCategory ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true and openWorldHint=true, so the mutation profile is known from structured data. The description adds nothing beyond that — no note about what a PATCH does to omitted fields (partial vs full replacement), no confirmation requirement, no error behavior.

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?

It is short and front-loads the route, which is good, but half the text is generator boilerplate ('Generated from Snipe-IT OpenAPI operation categoriesid-1') that conveys no actionable meaning and displaces real 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?

This is a destructive, open-world mutation with a nested required body, an untyped category_type string, and a conditional confirm parameter — and no output schema. For that complexity level, the description leaves critical operational context entirely to the schema and annotations.

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 never mentions the id path parameter, the nested body with required name and category_type, or the SNIPEIT_CONFIRM_WRITES confirm gate. With schema coverage at 67% and a nested object, the description should have carried the remaining load but instead adds nothing beyond what the schema already documents.

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

Purpose3/5

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

The description states a verb and resource ('Update a Category') plus the HTTP route, so the basic intent is recoverable. However, it does nothing to distinguish this tool from the many near-identical siblings (snipeit_gen_categoriesid, _2, _3, snipeit_gen_categories_1/2), and its second sentence is generator boilerplate rather than clarifying 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?

There is no guidance on when to use this PATCH endpoint versus the other category tools, nor any mention of prerequisites such as the required confirm=YES write gate. The agent must infer everything from the route string.

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

snipeit_gen_categoriesid_2DELETE /categories/{id}C
DestructiveIdempotent

DELETE /categories/{id}: Delete a Category. Generated from Snipe-IT OpenAPI operation categoriesid-2.

NameRequiredDescriptionDefault
idYesCategory ID
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it doesn't say what happens to assets assigned to the category, whether deletion is soft or permanent, or that the confirm parameter is required when SNIPEIT_CONFIRM_WRITES is set.

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 action front-loaded; nothing is padded. The trailing 'Generated from Snipe-IT OpenAPI operation categoriesid-2' is provenance noise that doesn't help invocation, keeping it short of a 5.

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 destructive mutation with no output schema and a confirmation mechanism in its parameters. The description should explain consequences (orphaned assets, irreversibility, the confirm gate), but it only restates the HTTP operation, leaving the agent under-informed for a dangerous call.

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%, so both 'id' and 'confirm' are fully documented in the schema. The description adds no syntax, format, or lookup guidance (e.g., how to obtain a category ID) beyond what the schema already provides, making the baseline 3 correct.

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 ('Delete a Category') plus the underlying route, so an agent knows exactly what the tool does. It does not, however, distinguish this from the many sibling category operations (snipeit_gen_categoriesid, _1, _3), whose purposes must be inferred from their own descriptions.

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 versus the sibling category endpoints or snipeit_raw_request, and no mention of prerequisites such as whether the category must be empty of assets before deletion. Usage must be inferred entirely from the name and the word 'Delete'.

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

snipeit_gen_categoriesid_3GET /categories/{id}C
Read-onlyIdempotent

GET /categories/{id}: Return a Category by id. Generated from Snipe-IT OpenAPI operation categoriesid-3.

NameRequiredDescriptionDefault
idYesCategory ID

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, so the description carries a lower bar. It adds nothing beyond them: no statement about auth requirements, error behavior on a missing ID, or what happens with unknown ids. The 'Generated from Snipe-IT OpenAPI operation categoriesid-3' line is provenance boilerplate, not behavioral content.

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?

Very short and front-loaded, with the resource and operation stated in the first clause. The generated-from suffix is filler, but it costs little.

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 single-parameter read with full annotations and full schema coverage, little is strictly required. However, with four indistinguishable category-get siblings in the toolset, the description leaves the agent unable to pick correctly, which is the one gap that matters here.

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?

One parameter with 100% schema coverage; the schema already documents 'Category ID'. The description adds no format, range, or sourcing guidance beyond the schema, so the baseline 3 applies.

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

Purpose3/5

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

It states a specific verb and resource ('Return a Category by id'), which is clear enough on its own. But the sibling list contains several near-identical tools (snipeit_gen_categoriesid, _1, _2, _3), and the description gives no basis for choosing this one. Purpose is stated without differentiation.

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 indication of when to use this versus the other category-get siblings, nor any prerequisites or alternatives. The agent must infer that all four are the same operation from naming alone.

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

snipeit_gen_companiesGET /companiesC
Read-onlyIdempotent

GET /companies: Return a listing of companies. Generated from Snipe-IT OpenAPI operation companies.

NameRequiredDescriptionDefault
nameNoCompany name
sortNoColumn to sort by (not declared in the spec for this operation, added by codegen)
limitNoPage size (not declared in the spec for this operation, added by codegen)
orderNoSort order (not declared in the spec for this operation, added by codegen)
offsetNoRows to skip (not declared in the spec for this operation, added by codegen)
searchNoText search (not declared in the spec for this operation, added by codegen)

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is fully covered. The description adds nothing behavioral beyond that — no mention of pagination behavior, default page size, or what a listing contains; the note about being generated from the Snipe-IT OpenAPI operation explains provenance, not 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?

Two short sentences with the core action front-loaded. The trailing "Generated from Snipe-IT OpenAPI operation companies." largely restates the tool name and is close to filler, but it is short enough not to hurt.

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 no output schema, the description should say what a listing returns (array shape, pagination metadata), and it only says "a listing of companies." The annotations cover safety and the schema covers inputs, so this is adequate but thin for the return-value side.

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 parameters documented, including the codegen-added sort/limit/offset/search caveats, so the baseline is 3. The description adds no meaning about how name/search filters interact with the listing or how limit/offset paginate.

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 a specific verb and resource ("Return a listing of companies") plus the HTTP route, so the agent knows it is a read-only list endpoint. However, it gives no clue how it differs from the closely-named sibling snipeit_gen_companies_1, leaving the agent to guess between duplicate codegen variants.

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 statement of when to use this tool versus snipeit_gen_companiesid, snipeit_gen_companies_1, or snipeit_raw_request. No preconditions, no filtering/pagination guidance, no exclusions — the agent must infer everything from the name.

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

snipeit_gen_companies_1POST /companiesC
Destructive

POST /companies: Create a new company. Generated from Snipe-IT OpenAPI operation companies-1.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already state destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety frame is covered. The description adds nothing beyond that frame: it does not explain that the write is irreversible, that duplicates are possible on retry given non-idempotency, or that SNIPEIT_CONFIRM_WRITES may require the confirm token (only the schema mentions this).

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 first sentence is front-loaded and efficient, but the generator provenance ("Generated from Snipe-IT OpenAPI operation companies-1") is noise that earns no place in an agent-facing definition. The result is short but under-specified rather than truly 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?

This is a destructive mutation with no output schema, a nested body, and a confirmation mechanism. The description does not say what is returned, whether the created company's ID is available for follow-up calls, or how the confirm parameter interacts with this write, leaving the agent without crucial operational 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 50%, so the description needed to fill gaps and does not. The nested body object's only required field (name) and the confirm security gate are documented in the schema, but the description says nothing about them, so it adds no semantic value over the structured data.

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 gives a specific verb and resource ("Create a new company"), so the agent knows exactly what is made. It does not distinguish this write from sibling endpoints such as snipeit_gen_companies (list) or snipeit_gen_companiesid (single-company operations), which all sit in the same namespace.

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 versus snipeit_raw_request or the other companies endpoints, and no mention of prerequisites such as the confirmation gate. The agent has 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.

snipeit_gen_companiesidGET /companies/{id}B
Read-onlyIdempotent

GET /companies/{id}: Retrieve the specific details of a company by id. Generated from Snipe-IT OpenAPI operation companiesid.

NameRequiredDescriptionDefault
idYescompany id

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description merely restates that this is a GET/retrieve operation and adds no permissions, rate-limit, return-shape, or error-behavior 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 useful information is front-loaded in one clear sentence. The second sentence is generated provenance boilerplate that does not help an agent invoke the tool, but the description remains short overall.

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 one-parameter read tool with complete schema coverage and rich safety annotations, the description is adequate. It does not describe the returned company fields, but no output schema exists and the operation is straightforward.

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%, and the id parameter is already documented as 'company id'. The description only says 'by id' and adds no format, range, or lookup semantics 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 states a clear verb and resource: retrieve the specific details of a company by id. This distinguishes it from list-style siblings like snipeit_gen_companies, though it does not explicitly name alternatives or the duplicate companiesid variants.

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 phrase 'by id' implies the tool should be used when a company id is known, but it gives no explicit when-to-use guidance or comparison to list/raw-request alternatives. Usage is inferable but not spelled out.

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

snipeit_gen_companiesid_1PUT /companies/{id}C
DestructiveIdempotent

PUT /companies/{id}: Updates a company's details. Generated from Snipe-IT OpenAPI operation companiesid-1.

NameRequiredDescriptionDefault
idYescompany id
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=true, but the description adds no behavioral context beyond the basic update purpose. It does not explain what may be destructively changed, how the confirm gate works, or what permissions are required.

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 short and front-loads the operation and purpose effectively. The second sentence about being generated from the OpenAPI operation is extraneous but does not significantly harm 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?

The schema and annotations carry most of the safety and parameter details, including the destructive hint and confirm field. However, for a destructive nested-body update tool with many similar siblings, the description could provide more context about write confirmation and required body fields.

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 moderate at 67%, and the description adds no parameter meaning beyond 'company's details.' It does not clarify the required body.name, the company id path parameter, or the confirm='YES' write gate, leaving the nested body partially undocumented.

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 HTTP verb and resource: 'PUT /companies/{id}: Updates a company's details.' It is clear what the tool does, though it does not distinguish this company-update endpoint from sibling company tools such as snipeit_gen_companiesid or snipeit_gen_companiesid_2.

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 guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. It merely states the operation and does not route the agent among the many sibling company endpoints.

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

snipeit_gen_companiesid_2PATCH /companies/{id}C
DestructiveIdempotent

PATCH /companies/{id}: Updates a part of a company's details. Generated from Snipe-IT OpenAPI operation companiesid-2.

NameRequiredDescriptionDefault
idYescompany id
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so safety profile is covered. The description adds only "part of" (partial update), but says nothing about what happens to omitted fields, the confirm-write flow, required permissions, or irreversibility beyond the annotation.

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 core sentence is short and front-loaded, but the second sentence ("Generated from Snipe-IT OpenAPI operation companiesid-2") is boilerplate provenance that gives the agent nothing actionable.

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 destructive nested-body mutation with no output schema and no annotation-independent explanation of permissions or write-confirmation, the description is too thin. It does not tell the agent what the body may contain beyond the single required name, nor what a successful response looks like.

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%: id and confirm are documented in the schema, but the nested body object and its required name field carry no description. The description does not name any updatable field, so 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.

Purpose4/5

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

States a specific verb and resource ("Updates a part of a company's details") and the PATCH path distinguishes it from the GET/DELETE/PUT company siblings (companiesid, companiesid_1, companiesid_3). It does not explicitly name those siblings, so the differentiation is only implicit in the HTTP method.

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 when-to-use or when-not-to-use guidance. It never says how this differs from the sibling full-update (PUT) endpoint, nor that it is intended for partial edits of only some fields.

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

snipeit_gen_companiesid_3DELETE /companies/{id}C
DestructiveIdempotent

DELETE /companies/{id}: Delete's a company. Generated from Snipe-IT OpenAPI operation companiesid-3.

NameRequiredDescriptionDefault
idYescompany id
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the agent knows this is a destructive write. The description adds nothing beyond restating the operation, and critically omits behavioral details such as whether deletion is permanent, what happens to associated assets, or permission requirements.

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

Conciseness4/5

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

The description is brief and front-loads the operation. The generator provenance sentence adds little value but does not interfere with comprehension.

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 destructive nature and lack of an output schema, the description is minimally adequate because annotations convey the safety profile and the schema documents parameters. However, it leaves important gaps about side effects and cascade behavior that an agent would need before invoking a destructive delete.

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%, and the schema itself describes the 'id' and 'confirm' parameters well. The description adds no parameter meaning beyond what the schema provides, so the baseline of 3 is appropriate.

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

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 ('Delete's a company') and includes the path, so the agent knows exactly what the tool does. It does not distinguish this company-delete operation from the many other delete operations among its siblings, 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, nor any prerequisites or warnings. The delete semantics are implied by the name, but the description provides no context about when deletion is appropriate.

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

snipeit_gen_componentsGET /componentsC
Read-onlyIdempotent

GET /components: Return a listing of components. Generated from Snipe-IT OpenAPI operation components.

NameRequiredDescriptionDefault
nameNo
sortNoSpecify the column name you wish to sort by
limitNoSpecify the number of results you wish to return
orderNoSpecify the order (asc or desc) you wish to order by on your sort column
expandNoWhether to include detailed information on categories, etc (true) or just the text name (false)
offsetNoOffset to use
searchNoA text string to search the assets data for
order_numberNoReturn only assets associated with a specific order number

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered; the description adds nothing beyond that. It does not mention pagination defaults, whether the response is capped by a default limit, how filtering combines, or what expand actually returns — all behavior an agent would need.

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?

It is short and front-loaded, but the second sentence ("Generated from Snipe-IT OpenAPI operation components") is generator metadata that does not help an agent, and the leading "GET /components:" duplicates the title.

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 an eight-parameter listing endpoint with no output schema, the description should at minimum explain what the returned listing looks like and how limit/offset pagination defaults behave. Instead it only echoes the operation summary, leaving the agent to infer everything from the schema.

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 88%, so the eight parameters are already well documented in the schema; the description adds no additional meaning for name, search, sort/order, limit/offset, expand, or order_number. Baseline 3 applies when the schema carries the load.

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

Purpose3/5

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

The description states a verb and resource ("Return a listing of components"), but it is essentially a restatement of the endpoint path and title, and it never clarifies what a "component" is in Snipe-IT (a distinct asset class, not hardware) or how this differs from the sibling snipeit_list_components, which appears to do the same thing.

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 snipeit_list_components, snipeit_gen_components_1, or snipeit_gen_componentsid, all of which sit in the same namespace. No prerequisites, no mention that it is the raw OpenAPI-mirror variant.

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

snipeit_gen_components_1POST /componentsC
Destructive

POST /components: Creates a component. Generated from Snipe-IT OpenAPI operation components-1.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, non-idempotent, and open-world, so the safety profile is carried by structured fields. The description adds no extra behavior context (what must exist first, e.g. a valid category_id, whether confirmation is required, effect of duplicate creation), so it earns little beyond the annotations.

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

Conciseness3/5

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

Very short and front-loaded, but the sentence is padded with a redundant REST path repeat and the boilerplate "Generated from Snipe-IT OpenAPI operation components-1" that conveys nothing actionable.

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 destructive create over a nested 10-field body with no output schema; the description should at minimum note the required fields and the confirm-write requirement. As written, it is not sufficient for an agent to invoke correctly without reading the schema.

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 zero parameter detail. It does not mention the required body fields (name, qty, category_id) nor explain the `confirm` parameter, which the schema itself describes; a nested body of ten fields is left entirely to the schema.

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

Purpose3/5

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

The description gives a specific verb and resource ("Creates a component"), which is enough to know the general operation. However it never differentiates this from sibling tools like snipeit_gen_components (list) or snipeit_create_maintenance, and the opening REST path restates what the title already says.

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 versus snipeit_raw_request or the other component endpoints, and no mention of prerequisites or the write-confirmation workflow. The agent must infer everything from context.

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

snipeit_gen_componentsidGET /components/{id}C
Read-onlyIdempotent

GET /components/{id}: Get the details on a component. Generated from Snipe-IT OpenAPI operation componentsid.

NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that—no return format, no note that it fails on unknown IDs, no auth context—so it contributes little behavioral value on top of structured data.

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

Conciseness3/5

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

Short and front-loaded, but the trailing 'Generated from Snipe-IT OpenAPI operation componentsid' is boilerplate that adds no value, and the core sentence duplicates the title.

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 single-record fetch with no output schema, the description should indicate what the response contains and how the id maps to a component. It omits return information and parameter meaning, leaving an agent to guess the payload structure.

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 0%, so the single 'id' parameter is undocumented in both schema and description. The description does not clarify that this is the component's numeric ID or what form it takes, leaving a coverage gap unaddressed.

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

Purpose3/5

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

States a clear verb (Get) and resource (details on a component), so an agent knows it retrieves a single component. However, it largely restates the title 'GET /components/{id}' and gives no differentiation from near-identical siblings like snipeit_gen_componentsid_1/_2/_3 or snipeit_list_components.

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 statement of when to use this versus snipeit_list_components or the other componentsid variants. Without guidance the agent must infer selection 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.

snipeit_gen_componentsid_1PUT /components/{id}C
DestructiveIdempotent

PUT /components/{id}: Updates a component. Generated from Snipe-IT OpenAPI operation componentsid-1.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not explain that PUT replaces the whole record, which fields are mandatory in the body (name, qty, category_id), or what happens to omitted fields. For a destructive mutation, that is a notable 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 short and front-loaded, but the second sentence is pure generator provenance that consumes half the text without informing the agent. Removing it would lose nothing.

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 destructive, nested-body mutation with no output schema and a third of parameters undocumented; the description should at minimum state replacement semantics and required body fields. As written it is too thin for the complexity of the operation.

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% – just the confirm gate is documented in the schema – and the description supplies no parameter meaning at all. It never explains the id path parameter or the required body fields, so the low-coverage gap is left entirely uncompensated.

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

Purpose3/5

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

The description gives a verb and resource ("Updates a component") that is slightly clearer than the bare title, but it provides no differentiation from the many sibling PUT-style component tools (snipeit_gen_componentsid, _2, _3, and the checkout/checkin/associate variants). An agent cannot tell which of these overlapping component operations it needs from the description alone.

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 sibling component update/associate endpoints, nor any prerequisites. The only remaining sentence is provenance boilerplate ("Generated from Snipe-IT OpenAPI operation componentsid-1"), which offers no usage direction.

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

snipeit_gen_componentsid_2PATCH /components/{id}C
DestructiveIdempotent

PATCH /components/{id}: Updates a some details of a component. Generated from Snipe-IT OpenAPI operation componentsid-2.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

The annotations already disclose the important safety profile: not read-only, destructive, idempotent, and open-world. The description adds little beyond that; it does not explain what can be destructively changed, how partial updates behave, or how the confirm flag affects execution.

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 short and front-loads the endpoint, which is good. However, it contains the awkward phrase 'a some details' and a generated-OpenAPI attribution that does not help an agent invoke the tool.

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 destructive PATCH operation with a nested body and a confirm requirement, the description is too thin. It omits practical update semantics, required field expectations, and the meaning of the confirm flag, leaving the schema and annotations to do most of the work.

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%, so the description should carry more of the burden for explaining parameters. Instead it says only 'some details' and does not clarify the required body fields, optional fields, or the special confirm parameter.

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 HTTP method and resource: PATCH /components/{id} updates a component. That is clear enough for an agent to know this is a component-update operation, but it does not differentiate it from other component-related siblings such as the likely PUT/PATCH variants.

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 a PUT-style full update or the raw request tool. It also gives no prerequisites, authorization notes, or conditions under which this specific PATCH endpoint should be chosen.

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

snipeit_gen_componentsid_3DELETE /components/{id}C
DestructiveIdempotent

DELETE /components/{id}: Deletes a component. Generated from Snipe-IT OpenAPI operation componentsid-3.

NameRequiredDescriptionDefault
idYes
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is largely covered. The description adds only a restatement that the component is deleted, without explaining irreversibility, permission requirements, side effects on associated assets, or expected response behavior.

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

Conciseness4/5

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

The description is very short and front-loaded with the core action. The OpenAPI generation note is mildly boilerplate, but overall there is no significant verbosity or structural issue.

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 annotations and schema provide enough safety and confirmation context for an agent to invoke the tool minimally. Still, for a destructive delete operation, the description leaves out important context about what deletion implies and how it differs from related component endpoints.

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 documents the confirm parameter and its SNIPEIT_CONFIRM_WRITES behavior, but the required id parameter has no schema description. The tool description does not compensate by explaining what id refers to or any parameter semantics beyond the operation name.

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: 'DELETE /components/{id}: Deletes a component.' That clearly identifies the operation. However, with many sibling component endpoints, it does not distinguish this delete operation from related component tools beyond the verb itself.

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, nor does it mention prerequisites or exclusions. The destructive nature is only conveyed through annotations and the schema's confirm parameter, not through usage guidance.

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

snipeit_gen_componentsidassetsGET /components/{id}/assetsB
Read-onlyIdempotent

GET /components/{id}/assets: Returns a list of which assets a component has been checked out to. Generated from Snipe-IT OpenAPI operation componentsidassets.

NameRequiredDescriptionDefault
idYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds that results are assets checked out to a component, but says nothing about pagination, result shape, or behavior for a component with no checkouts.

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 purpose is front-loaded in a single sentence; the trailing 'Generated from Snipe-IT OpenAPI operation' sentence is boilerplate that occupies space without aiding selection.

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-only list endpoint with solid annotations and a single parameter, the description is adequate but not complete: it lacks guidance on output contents or pagination, which it would need since there is no output schema.

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

Parameters3/5

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

Schema description coverage is 0%, but the description's path notation and 'which assets a component has been checked out to' makes clear that 'id' is the component ID. It adds modest meaning but no detail on valid ranges or error behavior for a nonexistent component.

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 a specific verb and resource: returns a list of assets a given component has been checked out to. This distinguishes it from generic component listings like snipeit_gen_componentsid, though it doesn't explicitly name a sibling alternative.

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

Usage Guidelines2/5

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

No indication of when an agent should call this versus related endpoints such as snipeit_get_user_assets or snipeit_list_components; no prerequisites, pagination notes, or exclusions are given.

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

snipeit_gen_componentsidcheckinPOST /components/{id}/checkinC
Destructive

POST /components/{id}/checkin: Check a component back in from an asset. Generated from Snipe-IT OpenAPI operation componentsidcheckin.

NameRequiredDescriptionDefault
idYesID of the record in the components_assets *join* record
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that—it doesn't mention the confirmation gate (SNIPEIT_CONFIRM_WRITES), the checkin_qty semantics, or what state change occurs. With no incremental disclosure, a 2 is warranted.

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?

Short, but the leading 'POST /components/{id}/checkin:' merely restates the tool name and the trailing 'Generated from Snipe-IT OpenAPI operation' is pure boilerplate. One sentence of real content out of three fragments.

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?

A destructive, non-idempotent mutation with a nested required body, no output schema, and 67% parameter coverage. The description doesn't explain the confirm gate, the quantity requirement, or the outcome, leaving meaningful gaps for a write operation.

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?

At 67% schema coverage, the schema documents the id (components_assets join record) and the confirm const. The description adds almost nothing, only loosely implying 'from an asset', and never mentions the required checkin_qty or partial check-in behavior—the most consequential parameter for this call.

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 a specific verb and resource: 'Check a component back in from an asset', which is clear and distinguishes it from the checkout operation. However, it does not distinguish this raw generated endpoint from the sibling snipeit_checkin_component, which appears to be the same 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?

No when-to-use guidance, no prerequisites, and no mention of the sibling snipeit_checkin_component or snipeit_gen_componentsidcheckout as the alternative. The agent must infer selection 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.

snipeit_gen_componentsidcheckoutPOST /components/{id}/checkoutC
Destructive

POST /components/{id}/checkout: Check an accessory out to an asset. Generated from Snipe-IT OpenAPI operation componentsidcheckout.

NameRequiredDescriptionDefault
idYesID of the component to check out
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not mention the SNIPEIT_CONFIRM_WRITES / confirm="YES" gate that governs whether the write applies, nor what stock or assignment state changes on success.

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?

Short and front-loaded, but the first clause merely restates the endpoint path and title, and the 'Generated from Snipe-IT OpenAPI operation...' sentence is boilerplate that adds no decision-relevant information. Little of the text 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?

A destructive write with a nested body object, no output schema and a conditional confirmation parameter needs more than one sentence. The annotations cover the safety profile, but the wrong resource name and missing confirmation/id semantics leave real gaps 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 coverage is 67% and the description explains none of the three parameters. The nested body fields assigned_to and assigned_qty carry no description in the schema, and the description does not clarify whether assigned_to is a user ID or an asset ID, or how assigned_qty interacts with component stock.

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 verb 'check out' is present, but the resource is mislabeled: the endpoint is /components/{id}/checkout and the tool name is snipeit_gen_componentsidcheckout, yet the text says 'Check an accessory out to an asset.' An agent reading only the description could route to an accessory tool instead. Only the auto-generated operation suffix hints at the real resource.

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 versus the many overlapping siblings such as snipeit_checkout_component, snipeit_gen_componentsidcheckin, or the accessory/consumable checkout variants. The 'to an asset' phrasing even implies a restriction (assets only) that the schema's assigned_to integer does not confirm.

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

snipeit_gen_consumablesGET /consumablesC
Read-onlyIdempotent

GET /consumables: Return a listing of consumables. Generated from Snipe-IT OpenAPI operation consumables.

NameRequiredDescriptionDefault
nameNoConsumable name
sortNoSpecify the column name you wish to sort by
limitNoSpecify the number of results you wish to return
orderNoSpecify the order (asc or desc) you wish to order by on your sort column
expandNoWhether to include detailed information on categories, etc (true) or just the text name (false)
offsetNoOffset to use
searchNoA text string to search the assets data for
company_idNoCompany ID to filter by
category_idNoCategory ID to filter by
order_numberNoReturn only assets associated with a specific order number
manufacturer_idNoManufacturer ID to filter by

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds only 'Return a listing' and an OpenAPI provenance note; it gives no pagination, filtering, authentication, rate-limit, or response-shape context beyond the structured fields.

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

Conciseness3/5

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

The description is short, but it is not maximally efficient: the second sentence ('Generated from Snipe-IT OpenAPI operation consumables') is provenance filler, and the first sentence largely restates the title. It is compact but leaves room for more useful front-loaded guidance.

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 an 11-parameter listing endpoint with no output schema and many overlapping sibling endpoints, the description is too thin to guide correct use on its own. The rich input schema helps, but the description does not clarify pagination/filter behavior or how this differs from other consumables listing tools.

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% for all 11 optional parameters, so the schema itself carries the parameter semantics. The description does not add defaults, syntax, or selection guidance for filters such as search, sort, limit, offset, expand, or company_id.

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 HTTP verb and resource ('GET /consumables: Return a listing of consumables'), so its basic purpose is clear. It does not distinguish this endpoint from sibling listing tools such as snipeit_list_consumables or the repeated snipeit_gen_consumables_1/_2 variants, and the 'Generated from...' note is provenance rather than purpose.

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 snipeit_list_consumables or the other generated consumables listing endpoints, and no prerequisites or exclusion conditions are stated. The agent must infer appropriate use from the endpoint name and schema alone.

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

snipeit_gen_consumables_1POST /consumablesC
Destructive

POST /consumables: Create a new consumable. Generated from Snipe-IT OpenAPI operation consumables-1.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

With annotations declaring destructiveHint=true, non-idempotent, and open-world behavior, the safety profile is already covered, so the bar is lower — but the description adds nothing beyond the word "Create": no mention of side effects, required permissions, duplicate-name handling, or what a successful write returns. Note the destructiveHint=true on a create operation is questionable in the annotations themselves, not contradicted by the description.

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 short and front-loads the action, but the second sentence ("Generated from Snipe-IT OpenAPI operation consumables-1.") is internal provenance noise that provides no value to a calling agent.

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 write tool with a nested 11-field body, no output schema, and no explanation of success/failure semantics or response content. Given that complexity and the absence of an output schema, the description is far too thin to let an agent call it 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?

Schema description coverage is only 50%, so the description needs to compensate and does not. It never mentions the nested body object, the required name/qty/category_id fields, or the confirm gate — an agent gets zero parameter meaning from the text.

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

Purpose3/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 ("Create a new consumable"), which is clearer than the bare title POST /consumables. However, it does nothing to distinguish this from the many sibling consumable endpoints (list, update, checkout), and the second sentence is pure provenance metadata rather than purpose.

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 versus snipeit_gen_consumables (list), snipeit_gen_consumables_2 (update), or snipeit_gen_consumablesidcheckout. It also never mentions the confirm=YES write gate, which is a real invocation prerequisite even though the schema documents it.

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

snipeit_gen_consumables_2PUT /consumables/{id}C
DestructiveIdempotent

PUT /consumables/{id}: Updates a consumable. Generated from Snipe-IT OpenAPI operation consumables-2.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.2/5.0
Behavior2/5

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

The annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered structurally. The description adds no behavioral context beyond repeating that it updates a consumable; it does not mention that this is a destructive full-replacement-style operation, what data may be lost, or how confirmation works.

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?

It is short and front-loaded with the verb and resource, but the second sentence 'Generated from Snipe-IT OpenAPI operation consumables-2' is meta-information that does not help an agent invoke the tool. The terseness reflects under-specification rather than efficient communication.

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 destructive mutation with a complex nested body, three parameters, low schema description coverage, and no output schema, the description is far too thin. The annotations cover the mutation safety profile, but the description does not explain required body fields or confirmation semantics, leaving an agent to infer almost everything from the schema.

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% and the only described parameter is the confirm string. The required id and the nested body object with required fields name, qty, and category_id plus many optional fields are undocumented in both schema and description. The description provides no compensating explanation for any parameter.

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

Purpose3/5

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

The description states a clear verb and resource: 'Updates a consumable.' However, it is essentially a restatement of the title 'PUT /consumables/{id}' and the generated operation name, with no detail about what fields can be updated or how it differs from the many sibling consumable endpoints.

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 when-to-use guidance, no mention of prerequisites, and no reference to alternatives such as the consumable list/get/checkout endpoints in the sibling set. The agent receives no routing help beyond the HTTP method.

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

snipeit_gen_consumablesidGET /consumables/{id}B
Read-onlyIdempotent

GET /consumables/{id}: Get the details on a consumable. Generated from Snipe-IT OpenAPI operation consumablesid.

NameRequiredDescriptionDefault
idYes

TDQS

B3.2/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. The description adds no further behavioral context such as permissions, response format, or rate limits, but it does not contradict the annotations.

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

Conciseness4/5

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

The description is two short sentences and front-loads the endpoint and purpose. The 'Generated from Snipe-IT OpenAPI operation' clause is boilerplate and slightly redundant, so it is not perfectly economical.

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-by-id tool, the annotations cover side effects and the schema covers the required integer id. However, with no output schema the description does not say what details are returned, and it does not mention authentication or other operational context.

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 0%, so the description must carry the parameter semantics. The path '/consumables/{id}' implies that id identifies a consumable, but no format or additional constraints are given beyond what the schema already declares.

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 names a specific verb ('Get') and resource ('consumable') and makes clear that it retrieves details for the id in the path. It does not explicitly distinguish this tool from sibling list or checkout consumable tools, so it is clear but not fully differentiated.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no alternatives are named. It does not tell an agent whether to use this for a known consumable ID versus list_consumables for discovery.

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

snipeit_gen_consumablesid_1PATCH /consumables/{id}C
DestructiveIdempotent

PATCH /consumables/{id}: Updates a portion of a consumable record. Generated from Snipe-IT OpenAPI operation consumablesid-1.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond the annotation layer: it never warns that the operation is destructive, never notes that name/qty/category_id are effectively required in the body, and never mentions the SNIPEIT_CONFIRM_WRITES guard behavior. "Updates a portion" is the only semantic contribution.

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?

Two short sentences, front-loaded with the endpoint and action, so it is not bloated. But the second sentence ("Generated from Snipe-IT OpenAPI operation consumablesid-1") is provenance boilerplate that does not help an agent, and the whole thing is under-specified rather than tight.

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 destructive mutation with a nested body object, low schema description coverage, and no output schema. Given that complexity, the description should explain partial-update semantics, required fields, and the write-confirmation flow, and it does none of that, leaving the agent with little beyond the annotations.

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% and the body is a nested object with eleven properties, none explained in the description. The description names no parameters, so the gap in schema descriptions is never compensated; the confirm parameter's semantics and the required body fields must be inferred entirely from the schema.

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

Purpose3/5

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

The description states a verb and resource ("Updates a portion of a consumable record") and the HTTP path, so the basic action is clear. However, it is an auto-generated restatement of the endpoint and gives no differentiation from the many sibling consumable tools (snipeit_gen_consumablesid, snipeit_gen_consumablesid_2, snipeit_gen_consumablesidcheckout), so an agent cannot tell which consume-tool to pick without opening schemas.

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

Usage Guidelines2/5

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

No statement of when to use this partial update versus the full-update sibling (gen_consumablesid_2) or when not to. The only usage hint is the word "portion", which implies partial-update semantics but never explains that distinction or any prerequisites such as the confirm flag or required body fields.

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

snipeit_gen_consumablesid_2DELETE /consumables/{id}C
DestructiveIdempotent

DELETE /consumables/{id}: Deletes a consumable. Generated from Snipe-IT OpenAPI operation consumablesid-2.

NameRequiredDescriptionDefault
idYes
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true, so the safety profile is covered structurally. The description merely restates 'Deletes a consumable' and adds OpenAPI provenance boilerplate, contributing no extra behavioral context like irreversibility or the SNIPEIT_CONFIRM_WRITES gate.

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?

Front-loaded with the operation and short overall, but the 'Generated from Snipe-IT OpenAPI operation consumablesid-2' clause is filler that does not help an agent invoke the tool correctly.

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 destructive mutation with an unannotated id parameter and a conditional confirm requirement, the description omits critical caller guidance (irreversibility, the YES confirmation gate). Annotations cover safety flags but not the call mechanics, leaving real 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?

Schema coverage is only 50%, and the id parameter has no description at all. The description does not explain what the id refers to (consumable ID) nor clarify the confirm/SNIPEIT_CONFIRM_WRITES interaction, so it does not compensate 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?

States a specific verb (Deletes) and resource (a consumable identified by {id}), so the action is unambiguous. However, there are many near-identical sibling tools (snipeit_gen_consumablesid, _1, checkout, list) and the description does no work to distinguish this particular delete variant from them beyond the name.

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 vs alternatives, no mention of prerequisites (such as the confirm gate), and no exclusions. The only signal is the destructive annotation, not the description text.

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

snipeit_gen_consumablesidcheckoutPOST /consumables/{id}/checkoutC
Destructive

POST /consumables/{id}/checkout: Check an consumable out to a user. Generated from Snipe-IT OpenAPI operation consumablesidcheckout.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, and non-idempotent, so the agent knows this is an irreversible write. The description adds nothing beyond that: it does not mention that quantity is decremented from stock, that the confirm gate may be required, or what state changes result.

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 short and the purpose sentence is front-loaded, but the trailing 'Generated from Snipe-IT OpenAPI operation consumablesidcheckout' is boilerplate that repeats the tool name without adding meaning.

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 destructive, nested-body mutation with a conditional confirm requirement and no output schema, the description leaves key semantics (assigned_to vs checkout_qty, the YES confirmation flow, error behavior) entirely to the schema, which is only partially documented.

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 33% — only the confirm field is documented. The description does not explain the id (consumable id), body.assigned_to (user id), or checkout_qty fields at all, so it fails to compensate for the low 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?

States a specific verb and resource ('Check an consumable out to a user') on top of the path/title restatement, so an agent knows exactly what the operation does. It does not, however, distinguish this generated endpoint from the sibling snipeit_checkout_consumable, leaving ambiguity about which one to use.

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 endpoint versus snipeit_checkout_consumable, snipeit_bulk_checkout, or the sibling snipeit_gen_componentsidcheckout, nor any mention of prerequisites such as available stock or user eligibility.

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

snipeit_gen_departmentsGET /departmentsC
Read-onlyIdempotent

GET /departments: List departments. Generated from Snipe-IT OpenAPI operation departments.

NameRequiredDescriptionDefault
nameNo
sortNoColumn to sort by (not declared in the spec for this operation, added by codegen)
limitNoPage size (not declared in the spec for this operation, added by codegen)
orderNoSort order (not declared in the spec for this operation, added by codegen)
offsetNoRows to skip (not declared in the spec for this operation, added by codegen)
searchNoText search (not declared in the spec for this operation, added by codegen)
company_idNo
manager_idNo
location_idNo

TDQS

C2.6/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description carries less burden. Still, it adds no behavioral context such as pagination defaults, authentication needs, or what the list response contains; the only extra text is codegen provenance.

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 short and front-loads the purpose, but the first clause largely repeats the title and route, while the second sentence is boilerplate codegen provenance. It is concise but not information-dense.

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 nine-parameter list endpoint with no output schema, the description omits return shape, pagination defaults, filter behavior, and differentiation from other department-listing tools. It is not sufficient for an agent to call the tool confidently beyond its basic purpose.

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 56%, and the description says nothing about parameters. In particular, name, company_id, manager_id, and location_id lack schema descriptions and receive no clarification in the description, leaving their filtering semantics unclear.

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 provides a specific verb and resource: 'List departments'. However, it does not distinguish this tool from similarly named siblings such as snipeit_gen_departments_1 or snipeit_gen_departmentsid, leaving ambiguity about which listing endpoint is appropriate.

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 offers no guidance on when to use this tool versus alternatives like snipeit_gen_departments_1, snipeit_raw_request, or the single-department endpoint. It also does not clarify filter or pagination usage despite nine optional parameters.

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

snipeit_gen_departments_1POST /departmentsC
Destructive

POST /departments: Create a department. Generated from Snipe-IT OpenAPI operation departments-1.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already disclose the destructive, non-idempotent, open-world write profile, and the description adds nothing beyond that. It omits the SNIPEIT_CONFIRM_WRITES confirm="YES" requirement, which is central to actually completing this write.

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?

Very short with the action front-loaded, but 'POST /departments' duplicates the title and the OpenAPI provenance note adds no actionable 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?

For a destructive create operation with a nested body and a confirm gate, the description should explain the write-confirmation behavior and what a successful create yields. With no output schema and half the parameters undescribed, it is under-specified.

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 50% and the description contributes zero parameter meaning, neither the required body.name field nor the confirm gate. An agent must rely entirely on the schema, which leaves part of the surface undocumented.

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 a specific verb and resource ('Create a department'), so the operation is immediately identifiable. It offers no differentiation from the many sibling department tools (edit, get, delete), leaving the agent to 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 Guidelines2/5

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

There is no indication of when to use this versus snipeit_gen_departments_edit or the generic snipeit_raw_request, nor any prerequisites such as the confirm flag. Usage is only implied by the name.

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

snipeit_gen_departments_editPUT /departments/{id}C
DestructiveIdempotent

PUT /departments/{id}: Edit a department. Generated from Snipe-IT OpenAPI operation departments-edit.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is known. The description adds nothing beyond a restatement of the route: it does not say whether this is a full replacement of the department record, what fields are overwritten, or what the response contains. 'Generated from Snipe-IT OpenAPI operation departments-edit' is provenance, not behavior.

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?

It is short and front-loads the endpoint, which is good, but the second sentence is boilerplate provenance that adds no decision-relevant information, and the whole thing is undersized for a destructive nested-body mutation.

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 destructive PUT with a nested body object, no output schema, and low schema coverage, the description is far too thin. An agent cannot tell what a successful edit returns, whether omitted fields are cleared, or how this differs from the sibling department endpoints.

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 33%: the nested body object and the required id have no descriptions, and only the confirm parameter is documented in the schema. The description does not compensate by explaining the body's required 'name' field, whether other department fields are accepted, or the meaning of the path id.

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 a specific verb and resource ('Edit a department') plus the underlying endpoint, so the operation is identifiable. However, it does nothing to distinguish it from the many sibling department tools (snipeit_gen_departments, _1, departmentsid, departmentsid_1, _2), so an agent still has to infer which department mutation this is.

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 versus the other department endpoints (create, get, delete, partial update), and no mention of prerequisites or side effects. The only usage constraint (confirm='YES' when SNIPEIT_CONFIRM_WRITES=true) lives in the schema, not the description.

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

snipeit_gen_departmentsidGET /departments/{id}C
Read-onlyIdempotent

GET /departments/{id}: View a department. Generated from Snipe-IT OpenAPI operation departmentsid.

NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds nothing beyond the route – no note on what is returned, whether missing departments error out, or any auth/pagination context.

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?

It is short and front-loaded, but the second sentence ('Generated from Snipe-IT OpenAPI operation departmentsid.') is boilerplate that adds no information about behavior or usage.

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 single-GET read tool with annotations covering safety and only one integer parameter, this is minimally adequate. Still, no return-shape hint is given despite there being no output schema, so an agent cannot anticipate what a department object 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?

The single parameter 'id' has 0% schema description coverage, so the description should explain that it is the department ID and perhaps what form it takes. It says nothing about the parameter at all.

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

Purpose3/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 ('View a department') and mirrors the route, so the basic purpose is clear. However, it offers no differentiation from close siblings like snipeit_gen_departmentsid_1, _2 and snipeit_gen_departments_edit, leaving the agent unsure which department endpoint to pick.

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 when-to-use guidance, no mention of when to prefer this over the duplicate departmentsid siblings or snipeit_raw_request, and no prerequisites. Usage is only implied by the route string.

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

snipeit_gen_departmentsid_1PATCH /departments/{id}C
DestructiveIdempotent

PATCH /departments/{id}: Edit a department. Generated from Snipe-IT OpenAPI operation departmentsid-1.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

The annotations already declare that this is a destructive, idempotent, open-world write operation, so the description does not need to repeat those facts. However, it adds no behavioral context beyond "Edit a department"—it does not explain partial update semantics, what may be destroyed, or the SNIPEIT_CONFIRM_WRITES confirmation gate. It does not contradict the annotations.

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

Conciseness2/5

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

The description is short, but the second sentence about being generated from Snipe-IT OpenAPI adds no task-relevant information. The brevity here reflects under-specification rather than efficient, front-loaded guidance.

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 a nested body object, a required path parameter, destructive annotations, and no output schema, the description is too thin. The schema covers the confirm requirement, but the description omits the id/body relationship and the operational effect of editing a department.

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%, and the description does not compensate by explaining the path id, the required body.name field, or the confirm parameter. Only the confirm field itself has a schema description, so the description leaves most parameter usage undocumented.

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: "Edit a department" for the PATCH /departments/{id} endpoint. It is clear what the tool does, but it does not distinguish this operation from closely named siblings such as snipeit_gen_departments_edit or snipeit_gen_departmentsid_2.

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, including the similarly named department-editing siblings or the raw request tool. The description only identifies the HTTP operation, leaving the agent to infer usage context.

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

snipeit_gen_departmentsid_2DELETE /departments/{id}C
DestructiveIdempotent

DELETE /departments/{id}: Delete a department. Generated from Snipe-IT OpenAPI operation departmentsid-2.

NameRequiredDescriptionDefault
idYesDepartment ID
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds only provenance boilerplate ('Generated from Snipe-IT OpenAPI operation departmentsid-2') and says nothing about what deletion does to dependent users/assets or the SNIPEIT_CONFIRM_WRITES gate, which would have been genuinely useful 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 definition is short and front-loads the operation and resource. It loses a point only for the 'Generated from ... OpenAPI operation' boilerplate, which carries no decision value for an agent.

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?

Minimum viable: the destructive safety profile is fully carried by annotations and both parameters are fully documented in the schema, so an agent can call it correctly. However, for a destructive department deletion, the description should note the write-confirmation requirement and any cascade effects, which it omits.

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 'id' and the conditional 'confirm' parameter fully documented in the schema, so the baseline is 3. The description adds no parameter-level meaning beyond what the schema already provides.

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

Purpose3/5

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

The description names a clear verb and resource ('Delete a department'), but it is essentially a restatement of the tool name and title with no differentiation from the many sibling department endpoints (gen_departmentsid, gen_departmentsid_1, gen_departments_edit, etc.). An agent learns what it does but not how it stands apart from adjacent department operations.

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 choose this tool versus snipeit_gen_departmentsid_1 or snipeit_gen_departments_edit, nor any mention of prerequisites such as the required confirm="YES" gating. The only sentence present is the operation itself.

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

snipeit_gen_fieldsGET /fieldsetsC
Read-onlyIdempotent

GET /fieldsets: List all custom fieldsets. Generated from Snipe-IT OpenAPI operation fields.

NameRequiredDescriptionDefault
sortNoColumn to sort by (not declared in the spec for this operation, added by codegen)
limitNoPage size (not declared in the spec for this operation, added by codegen)
orderNoSort order (not declared in the spec for this operation, added by codegen)
offsetNoRows to skip (not declared in the spec for this operation, added by codegen)
searchNoText search (not declared in the spec for this operation, added by codegen)

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive, and openWorld, so the safety profile is covered. The description adds nothing behavioral beyond that: no mention of pagination defaults for limit/offset, whether results are paginated at all, or the shape of the response. The 'Generated from Snipe-IT OpenAPI operation fields' sentence is provenance metadata, not 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?

Very short and front-loaded with the endpoint and purpose. The trailing clause about codegen provenance is low-value filler, but it costs only a few words.

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 no output schema, the description should say something about what a fieldset record contains or how results are paged, and it does neither. Annotations cover the safety dimension, so the gap is moderate rather than severe, but for a list tool in a large confusing sibling set it should disambiguate more.

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%, and each of the five parameters (sort, limit, order, offset, search) carries its own description, so the baseline is 3. The description adds no filtering or sorting semantics beyond the schema, and notably does not clarify the search field's scope for this resource.

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 a specific verb and resource: 'List all custom fieldsets'. That is clear enough to know what it returns. However, the sibling set contains snipeit_gen_fieldsets and snipeit_gen_fieldsetsid, and the description does nothing to distinguish this 'fields' endpoint from the nearly identically named 'fieldsets' tool, leaving real 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?

There is no guidance on when to use this versus snipeit_gen_fieldsets, snipeit_gen_fieldsetsid, or snipeit_gen_fields_2, all of which appear adjacent in the sibling list. No prerequisites, no exclusions, no note that it is a plain unpaginated list.

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

snipeit_gen_fields_1GET /fieldsC
Read-onlyIdempotent

GET /fields: Returns a listing of available custom fields. Generated from Snipe-IT OpenAPI operation fields-1.

NameRequiredDescriptionDefault
sortNoColumn to sort by (not declared in the spec for this operation, added by codegen)
limitNoPage size (not declared in the spec for this operation, added by codegen)
orderNoSort order (not declared in the spec for this operation, added by codegen)
offsetNoRows to skip (not declared in the spec for this operation, added by codegen)
searchNoText search (not declared in the spec for this operation, added by codegen)

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing beyond that — no mention of pagination, default page sizes, or what a 'field' entry contains, despite five paging/sorting parameters.

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?

Two short sentences that are front-loaded, but the second sentence ('Generated from Snipe-IT OpenAPI operation fields-1') is codegen boilerplate that conveys little to an agent choosing a tool. Nothing is bloated, but very little is also said.

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 list endpoint with five optional query parameters and no output schema, the description should indicate what is returned and how pagination behaves. It says only that fields are 'available', leaving return shape and paging semantics undocumented.

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% and all five parameters (sort, limit, order, offset, search) carry their own descriptions, so the schema does the heavy lifting. The description adds no extra meaning such as default sort column or whether search matches field name vs. type, so baseline 3 applies.

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

Purpose3/5

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

The description names the verb and resource ('GET /fields') and clarifies the payload as 'a listing of available custom fields', which is more informative than the bare name. However, it does nothing to distinguish this tool from the many near-identical siblings (snipeit_gen_fields, snipeit_gen_fields_2, snipeit_gen_fieldsets, etc.), leaving the agent unable to tell which one to pick.

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, when to prefer snipeit_gen_fields_2 or snipeit_gen_fieldsets, or what preconditions apply. The agent must infer everything from the name.

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

snipeit_gen_fields_2POST /fieldsC
Destructive

POST /fields: Create a custom field. Generated from Snipe-IT OpenAPI operation fields-2.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.7/5.0
Behavior2/5

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

The annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it doesn't explain that this creates a permanent configuration object, what happens on duplicate names, or that a confirmation string may be required (that only appears in the schema).

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

Conciseness4/5

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

It is short and front-loaded with the action. The trailing 'Generated from Snipe-IT OpenAPI operation fields-2' is provenance noise that provides no decision value, but the overall size is appropriate.

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 mutating tool with a nested, largely undocumented body schema and no output schema. An agent has no information about what a valid field definition looks like, which element types exist, or what the response returns, making the definition too thin 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 coverage is only 50%, and the nested body object has seven properties (name, element, format, help_text, field_values, show_in_email, field_encrypted) with no descriptions at all. The description could have explained the required name/element pair or the enum of element types, but instead says nothing about 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 states a specific verb and resource: 'Create a custom field.' The endpoint notation 'POST /fields' reinforces the mutation. However, it does nothing to distinguish this tool from near-identical siblings such as snipeit_gen_fields, snipeit_gen_fields_1, or snipeit_gen_update_fields, leaving the agent to guess which one to pick.

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 statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. Given that several sibling tools appear to target the same endpoint family, this is a real gap rather than an implied one.

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

snipeit_gen_fieldsetsPOST /fieldsetsC
Destructive

POST /fieldsets: Create a Fieldset. Generated from Snipe-IT OpenAPI operation fieldsets.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already disclose destructiveHint=true, non-idempotent, openWorld, so the safety profile is carried by structured data. The description adds nothing beyond it – nothing about the required confirmation flow (SNIPEIT_CONFIRM_WRITES) or the irreversible side effects of creating a fieldset. No contradiction with annotations, but zero added value.

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

Conciseness3/5

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

Very short and front-loaded, which is good, but the trailing clause 'Generated from Snipe-IT OpenAPI operation fieldsets' is pure provenance boilerplate that earns no place in an agent-facing description.

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 one-field create, the name alone gets the agent most of the way, and no output schema exists so return values needn't be explained. Still, nothing addresses the confirmation requirement or what a fieldset create affects, leaving gaps for a destructive, nested-body write.

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 50%: the nested body.name field has no description and the description does not compensate. The 'confirm' gate parameter is documented only in the schema, not explained in the description, despite being a critical precondition for a destructive write.

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

Purpose3/5

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

States the verb and resource ("Create a Fieldset") which is unambiguous on its own, but it is essentially the title restated and gives no clue how it differs from the many sibling fieldset tools (snipeit_gen_fields, snipeit_gen_fieldsetsid, snipeit_gen_update_fields). Minimum viable purpose.

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 when-to-use, no prerequisites, no alternatives named. The agent must infer from the name alone that this is the create path versus list/update/delete fieldset endpoints, several of which look similar under a 'gen' naming scheme.

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

snipeit_gen_fieldsetsidGET /fieldsets/{id}C
Read-onlyIdempotent

GET /fieldsets/{id}: Return fieldset info by id. Generated from Snipe-IT OpenAPI operation fieldsetsid.

NameRequiredDescriptionDefault
idYesThe ID number of the fieldset

TDQS

C2.6/5.0
Behavior2/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 fully covered elsewhere. The description adds no behavioral context beyond annotations — no note on authentication, response shape, or 404 behavior — and instead spends a sentence on generation provenance.

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?

Very short and front-loaded, which is good, but the trailing 'Generated from Snipe-IT OpenAPI operation fieldsetsid' is provenance noise that consumes a third of the text without helping an agent decide or invoke.

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 single-parameter read-only lookup with full schema coverage and annotations, this is minimally sufficient — an agent could call it correctly. But given the crowded family of duplicate fieldsetsid tools, the description does nothing to establish which variant to pick.

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?

There is a single required id parameter with 100% schema description coverage ('The ID number of the fieldset'), so the schema fully documents it. The description contributes nothing additional about the parameter, which matches the baseline-3 expectation when schema coverage is high.

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

Purpose3/5

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

The description states a specific verb (return) and resource (fieldset info by id), so the basic action is clear. However, it is essentially a restatement of the REST path in the title, and it offers nothing to distinguish this tool from the many near-identically named siblings such as snipeit_gen_fieldsetsid_1, _2, snipeit_gen_fieldsets, or snipeit_gen_fieldsetsidfields.

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 sibling fieldsets endpoints (list fieldsets, nested fields, or the duplicated id variants). The agent must infer usage entirely from the name and path.

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

snipeit_gen_fieldsetsid_1PUT /fieldsets/{id}C
DestructiveIdempotent

PUT /fieldsets/{id}: Update a Fieldset. Generated from Snipe-IT OpenAPI operation fieldsetsid-1.

NameRequiredDescriptionDefault
idYesCustom field ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already disclose destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the description carries a lower bar; still, it adds nothing about what 'update' replaces, whether omitted fields are cleared, or that the call is destructive. The 'Generated from Snipe-IT OpenAPI operation fieldsetsid-1' sentence is provenance metadata, not behavioral information.

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 short and front-loads the verb+resource, which is good. However, the second sentence is generator boilerplate ('Generated from ... fieldsetsid-1') that consumes half the text without informing an agent.

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 destructive, non-read-only mutation endpoint with no output schema and a nested request body, the description omits what the update affects, whether it is a full replace or merge, and what the confirm gate means. An agent could invoke it but would be guessing about consequences.

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% and the description contributes no parameter detail at all. It does not explain that `id` is the custom field ID, that `body.name` is the sole updatable field, or why `confirm: "YES"` is gated on SNIPEIT_CONFIRM_WRITES — all of that lives only in the schema, and the nested `body` object is left entirely to the schema.

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

Purpose3/5

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

The title and description state a verb+resource pair ('Update a Fieldset') so the basic operation is identifiable. But it does nothing to distinguish this from the closely-named siblings snipeit_gen_fieldsetsid, snipeit_gen_fieldsetsid_2, and snipeit_gen_fieldsetsidfields, leaving an agent to guess which 'fieldset by id' endpoint to call.

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 when-to-use guidance, no mention of prerequisites, and no reference to any alternative tool. The only routing signal is the HTTP verb in the title, which the agent must interpret on its own.

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

snipeit_gen_fieldsetsid_2DELETE /fieldsets/{id}C
DestructiveIdempotent

DELETE /fieldsets/{id}: Delete a Fieldset. Generated from Snipe-IT OpenAPI operation fieldsetsid-2.

NameRequiredDescriptionDefault
idYesCustom field ID
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description contributes nothing further: it never says what a delete destroys (the fieldset and its association to custom fields?), whether custom field data is orphaned, or that writes are gated by the confirm=YES / SNIPEIT_CONFIRM_WRITES flag. The trailing 'Generated from Snipe-IT OpenAPI operation' is pure provenance noise.

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?

It is short and front-loaded, but one of its two sentences ('Generated from Snipe-IT OpenAPI operation fieldsetsid-2') carries no actionable information and could be replaced with genuinely useful detail.

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 two-parameter destructive delete with a fully documented schema and annotations that flag destructiveness, no output schema, and no nested objects, the definition is minimally sufficient to invoke correctly. What it lacks is not invocation mechanics but consequence information: what the delete removes and what happens to fields bound to the fieldset.

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 schema documents 'id' as 'Custom field ID' and explains that 'confirm' must be the exact string 'YES' when SNIPEIT_CONFIRM_WRITES=true. With the schema doing all the work, the baseline of 3 applies; the description adds no parameter nuance of its own.

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

Purpose3/5

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

The description restates the title almost verbatim ('DELETE /fieldsets/{id}: Delete a Fieldset'), which does identify the verb and resource but adds essentially no meaning beyond the name/title pair. It gives no way to distinguish this from the many sibling fieldset operations (snipeit_gen_fieldsetsid, snipeit_gen_fieldsetsid_1, snipeit_gen_fieldsetsidfields), so an agent cannot tell which of them actually removes a fieldset.

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 when-to-use guidance, no prerequisites, and no mention of the alternatives (e.g. the sibling read/update fieldset tools). Nothing tells the agent when deletion is appropriate versus using an update, nor what the consequences of choosing this tool are.

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

snipeit_gen_fieldsetsidfieldsGET /fieldsets/{id}/fieldsB
Read-onlyIdempotent

GET /fieldsets/{id}/fields: Return list of associated fields within a fieldset. Generated from Snipe-IT OpenAPI operation fieldsetsidfields.

NameRequiredDescriptionDefault
idYesThe ID number of the fieldset

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered. The description adds only that the result is a list of associated fields; it says nothing about error behavior for an invalid fieldset id or whether it returns full field objects or references.

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?

Front-loads the path and the purpose in one tight sentence with no padding. The trailing 'Generated from Snipe-IT OpenAPI operation fieldsetsidfields' is filler that consumes space without informing an agent.

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 one-parameter read tool with full annotations this is adequate, but with no output schema the description should say more about what a 'list of associated fields' contains (ids vs. full field records) to let an agent plan downstream 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?

Single required parameter with 100% schema description coverage ('The ID number of the fieldset'). The phrase 'within a fieldset' in the description corroborates the schema but adds no syntax, format, or lookup guidance beyond it; baseline 3 applies.

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 a specific verb and resource: returns the list of fields associated with a given fieldset. This is clear enough to distinguish it from generic fieldset retrieval, though it never names the sibling snipeit_gen_fieldsetsid (which presumably returns the fieldset itself) to make the boundary explicit.

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 when-to-use guidance, no prerequisites, no alternatives named. The only context provided is the generated-from-OpenAPI boilerplate, which tells an agent nothing about selection criteria among the many fieldset/field siblings.

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

snipeit_gen_fieldsidGET /fields/{id}A
Read-onlyIdempotent

GET /fields/{id}: Return field info by id. Generated from Snipe-IT OpenAPI operation fieldsid.

NameRequiredDescriptionDefault
idYesThe ID number of the custom field

TDQS

A3.5/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. The description restates that it is a GET returning field info and adds only provenance ('Generated from Snipe-IT OpenAPI operation'), without extra behavioral context such as auth, rate limits, or response shape. It is consistent with the annotations.

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

Conciseness4/5

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

The description is two short sentences with the purpose front-loaded. The 'Generated from...' provenance is low-value but does not seriously undermine conciseness.

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 one-parameter read endpoint with complete schema coverage and annotations covering safety, this is sufficient to call the tool correctly. It does not explain return payload or error behavior, but the endpoint is low-complexity and no output schema exists.

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 sole parameter is fully documented in the schema at 100% coverage, including that it is the ID number of the custom field. The description adds no additional meaning, format, or constraints 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?

States a specific verb and resource: GET /fields/{id} returns field info by id. The operation is clear, but it does not differentiate from similarly named siblings such as snipeit_gen_fieldsid_1, snipeit_gen_fieldsid_2, or snipeit_gen_fields.

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 'by id' framing implies this is used when a custom field ID is known. However, it does not explicitly say when to use this instead of sibling field endpoints, nor does it state exclusions or alternatives.

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

snipeit_gen_fieldsid_1DELETE /fields/{id}C
DestructiveIdempotent

DELETE /fields/{id}: Delete a custom field. Generated from Snipe-IT OpenAPI operation fieldsid-1.

NameRequiredDescriptionDefault
idYesCustom field ID
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is fully covered structurally. The description adds nothing beyond restating the operation and 'Generated from Snipe-IT OpenAPI operation' boilerplate — no mention of what cascade effects deleting a field has on associated asset values or fieldset links.

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 action front-loaded. The trailing 'Generated from Snipe-IT OpenAPI operation fieldsid-1' is provenance filler that doesn't help an agent, but overall it is not bloated.

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 destructive write with no output schema, the description should ideally note irreversibility or side effects on fieldsets/asset data. Annotations convey destructiveness and the schema covers both params, so the minimum is met, but the consequence of the delete is left unexplained.

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% and the 'id' and 'confirm' parameters are fully documented in the schema, so the baseline applies. The description contributes no additional semantics about the id or the confirm gate beyond what structured data 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?

States a specific verb and resource: 'Delete a custom field.' An agent can tell this is the destructive field-removal operation versus siblings like snipeit_gen_update_fields or snipeit_gen_fieldsid, though the description never names or contrasts those siblings explicitly.

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

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 versus alternatives, no prerequisites, and no warning that a GET of the same resource (snipeit_gen_fieldsid) exists. The only hint of usage context lives in the schema's 'confirm' parameter description, not the tool description.

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

snipeit_gen_fieldsid_2PATCH /fields/{id}C
DestructiveIdempotent

PATCH /fields/{id}: Update a custom field. Generated from Snipe-IT OpenAPI operation fieldsid-2.

NameRequiredDescriptionDefault
idYesCustom field ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=true. The description adds no behavioral context beyond saying 'Update a custom field' and a generated note, so it does not explain what destruction is possible or when confirmation is required.

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 short and front-loads the operation name. The second sentence, 'Generated from Snipe-IT OpenAPI operation fieldsid-2,' is boilerplate that does not help an agent invoke the tool correctly.

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 destructive mutation with nested parameters, a required confirm string, and no output schema. The description should explain usage conditions, destructive implications, and the confirmation requirement, but instead provides only a one-line summary.

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%, and the nested body properties (name, element) have no descriptions. The description does not clarify the body fields or the confirm parameter beyond what the schema already provides, so 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.

Purpose3/5

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

The description states a clear verb and resource: updating a custom field via PATCH /fields/{id}. However, it does not distinguish this operation from the many sibling field tools such as snipeit_gen_update_fields, snipeit_gen_fieldsid_1, or snipeit_raw_request, so an agent cannot confidently choose it without external context.

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 about when to use this tool versus alternatives, no prerequisites, and no mention of the confirm parameter or destructive behavior in prose. The only usage information is the HTTP method and path.

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

snipeit_gen_fieldsidassociatePOST /fields/{id}/associateC
Destructive

POST /fields/{id}/associate: Associate a custom field with a custom fieldset. Generated from Snipe-IT OpenAPI operation fieldsidassociate.

NameRequiredDescriptionDefault
idYesCustom field ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is known from structured data. The description adds nothing beyond those hints: it doesn't say an association persists server-side, whether re-running duplicates, or what the confirm="YES" write gate means in practice. Only the boilerplate 'Generated from ... OpenAPI operation' sentence is added.

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?

Very short and front-loaded with the action, which is good, but the second sentence ('Generated from Snipe-IT OpenAPI operation fieldsidassociate') is pure provenance noise that consumes half the text without helping an agent invoke the tool.

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 destructive, non-idempotent mutation with a nested body object and no output schema; the description should at minimum explain the effect of the association and the confirm gate. Neither is covered, leaving the agent to infer everything from annotations and the schema.

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% and the description supplies no parameter semantics at all — the meaning of id, body.fieldset_id, and the confirm gate is left entirely to the schema. It does not compensate for the partially undocumented body object.

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

Purpose3/5

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

The description states a specific verb (Associate) and both resources (custom field, custom fieldset), which is more than a restatement of the opaque generated name. However it does not differentiate from the closely named sibling snipeit_gen_fieldsiddisassociate or clarify what association means relative to snipeit_gen_update_fields, so an agent still needs the schema to reason about it.

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 when-to-use guidance, no preconditions, no mention of the alternative disassociate operation. The only routing signal is the name itself; the description never says whether this is additive (field may belong to multiple fieldsets) or replacing.

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

snipeit_gen_fieldsiddisassociatePOST /fields/{id}/disassociateC
Destructive

POST /fields/{id}/disassociate: Removed the association of a custom field with a fieldset. Generated from Snipe-IT OpenAPI operation fieldsiddisassociate.

NameRequiredDescriptionDefault
idYesCustom field ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, and the description merely restates that this is a removal. It adds no context on irreversibility, permission requirements, or the SNIPEIT_CONFIRM_WRITES confirmation gate that the schema references.

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 core sentence is short and front-loaded, but the trailing 'Generated from Snipe-IT OpenAPI operation fieldsiddisassociate' is pure filler that adds nothing for an agent.

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 destructive three-parameter mutation with a nested body and no output schema, the description omits any behavioral detail on confirmation, side effects, or failure modes, leaving the schema to carry the load.

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 67% and the description only hints that the path id is a custom field and the body references a fieldset. It adds marginal meaning over the schema but does not compensate for the unlabeled fieldset_id parameter.

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 a specific verb (disassociate) and resource (custom field from fieldset), which clearly separates it from the sibling snipeit_gen_fieldsidassociate. The awkward past tense 'Removed' is a minor blemish but the intent is unmistakable.

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 versus snipeit_gen_fieldsidassociate or the generic update endpoints. The agent must infer the direction (removal vs addition) solely from the operation name.

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

snipeit_gen_get_new_endpointGET /consumables/{id}/usersD
Read-onlyIdempotent

GET /consumables/{id}/users. Generated from Snipe-IT OpenAPI operation get_new-endpoint.

NameRequiredDescriptionDefault
idYes

TDQS

D1.9/5.0
Behavior2/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 fully covered. The description adds nothing — not what the endpoint returns, not pagination, not whether it lists users who checked out the consumable versus all users.

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?

Two short sentences with no padding, and the route appears first. It is concise but only because there is almost no content; the generator suffix sentence is pure noise.

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 exists, so the description must convey what is returned — a list of users tied to the consumable — and it does not. For a one-parameter read tool the burden is small, but the definition still leaves the agent guessing at the response shape and semantics.

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 single required parameter 'id' has 0% schema description coverage. The path snippet implies it identifies a consumable, but neither the description nor the schema states that explicitly or clarifies what kind of consumable id is expected.

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 simply restates the HTTP route 'GET /consumables/{id}/users' plus a generator provenance note. It implies a read of the users associated with a consumable, but 'get_new-endpoint' is an auto-generated artifact name that conveys nothing and no sibling differentiation is offered.

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

Usage Guidelines1/5

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

No when-to-use, when-not-to-use, or alternative is mentioned. With siblings like snipeit_gen_consumablesid, snipeit_gen_consumablesidcheckedout, and snipeit_gen_get_new_endpoint_consumables_id_user, an agent has no basis to pick this one.

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

snipeit_gen_get_new_endpoint_consumables_id_userGET /consumables/{id}/userD
Read-onlyIdempotent

GET /consumables/{id}/user. Generated from Snipe-IT OpenAPI operation get_new-endpoint.

NameRequiredDescriptionDefault
idYes

TDQS

D1.7/5.0
Behavior2/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 safety is covered. The description adds nothing beyond the path — no indication of what resource is returned, whether results are filtered/paginated, or what permissions are required. It does not contradict the annotations, but it contributes no 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.

Conciseness2/5

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

It is short, but the brevity comes from under-specification rather than efficiency: the first sentence duplicates the title verbatim and the second is a generic code-generation note. Neither sentence earns its place by conveying information an agent cannot already read from the name.

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?

There is no output schema, no parameter documentation, and the description supplies no semantics for the sole required input or the return shape. For an open-world read endpoint with a 0%-covered schema, this leaves an agent unable to confidently invoke it.

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 single required 'id' parameter has 0% schema description coverage, so the description must compensate and does not. The path implies the id refers to a consumable, but the description never confirms this, states the expected type/format, or clarifies whether it could be a user id.

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 only restates the title/endpoint path ('GET /consumables/{id}/user') plus a provenance note about code generation. It never states in plain language what the operation returns or does (e.g., 'list users who have this consumable checked out'), and does not distinguish it from siblings like snipeit_gen_consumablesid or snipeit_get_user_accessories.

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

Usage Guidelines1/5

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

No when-to-use, when-not-to-use, or alternative guidance is given. An agent has no basis for choosing this tool over the many similarly named consumable/user endpoints such as snipeit_gen_consumablesid_1, snipeit_gen_consumablesid_2, or snipeit_gen_usersidaccessories.

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

snipeit_gen_groups_1GET /groupsC
Read-onlyIdempotent

GET /groups. Generated from Snipe-IT OpenAPI operation groups-1.

NameRequiredDescriptionDefault
nameNo
sortNoColumn to sort by (not declared in the spec for this operation, added by codegen)
limitNoPage size (not declared in the spec for this operation, added by codegen)
orderNoSort order (not declared in the spec for this operation, added by codegen)
offsetNoRows to skip (not declared in the spec for this operation, added by codegen)
searchNoText search (not declared in the spec for this operation, added by codegen)

TDQS

C2.2/5.0
Behavior2/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 structurally. The description adds nothing beyond that – no note on pagination behavior, search semantics, or what a 'group' object contains.

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?

Both sentences are noise: one repeats the title verbatim, the other states OpenAPI codegen provenance that helps no agent. There is no front-loaded explanation of what the endpoint returns or does.

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 six-parameter listing endpoint with no output schema, the description should at minimum describe the returned group records and pagination contract. It leaves the agent to reconstruct behavior entirely from the path and schema, which is inadequate.

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 83%, so the six parameters (name, sort, order, limit, offset, search) are largely documented in the schema itself, giving a baseline of 3. The description contributes no additional parameter meaning at all, so it cannot exceed that baseline.

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 is effectively a restatement of the title 'GET /groups' plus a codegen provenance note. It never says in natural language that this lists user groups, and it does nothing to distinguish it from the many sibling groups endpoints (snipeit_gen_groupsid, _2, _3, _4). An agent must infer resource semantics from the path alone.

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 listing endpoint versus the per-id group endpoints or snipeit_raw_request. No prerequisites, scope, or alternatives are mentioned.

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

snipeit_gen_groupsidGET /groups/{id}C
Read-onlyIdempotent

GET /groups/{id}: Return a group. Generated from Snipe-IT OpenAPI operation groupsid.

NameRequiredDescriptionDefault
idYesGroup ID

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds nothing beyond that—no note on permissions required, response shape, or 404 behavior for a missing group.

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?

It is short and front-loaded, which is good, but the second sentence ("Generated from Snipe-IT OpenAPI operation groupsid") is generator boilerplate that gives the agent no usable 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?

For a simple, fully-annotated single-param read, brevity would be acceptable—except that the sibling list contains five ambiguous groupsid lookups and the description offers no disambiguation. An agent has no basis to choose this one over gen_groupsid_1 through _4.

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?

There is a single parameter with 100% schema description coverage ("Group ID"), so the schema carries the semantics. The description adds nothing further, which is the baseline case for a one-param tool.

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

Purpose3/5

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

"Return a group" names a verb and resource, so the basic purpose is recoverable. But it is essentially a restatement of the HTTP operation and gives no way to tell this apart from the four near-identical siblings (gen_groupsid_1, _2, _3, _4), which all appear to return a group by id.

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 other groupsid variants or snipeit_raw_request. Usage is only inferable from the HTTP path, and no exclusions or alternatives are named.

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

snipeit_gen_groupsid_1POST /groupsC
Destructive

POST /groups: Create a group. Generated from Snipe-IT OpenAPI operation groupsid-1.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, but the description adds no behavioral context beyond repeating the endpoint. It doesn't mention the confirm='YES' write gate, permission requirements, or what happens on duplicate group names.

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 short and front-loaded, but the second sentence ('Generated from Snipe-IT OpenAPI operation groupsid-1') is pure filler that adds no actionable 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?

For a destructive write operation with no output schema and only 50% parameter coverage, the description should explain the confirm gate and the created-group response or failure modes. It omits all of this, leaving real gaps for an agent invoking a mutating endpoint.

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 nothing about the body fields (name required, permissions) or the confirm parameter. It leaves the agent to infer parameter meaning entirely from the nested 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?

States a specific verb and resource ('Create a group') and restates the HTTP endpoint, so the core action is unambiguous. However, it does nothing to distinguish this from the many sibling group tools (snipeit_gen_groupsid, _2, _3, _4), and the tool name's '_1' suffix actually suggests an ID-based operation rather than creation, which creates 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?

There is no guidance on when to use this versus sibling group tools or the generic snipeit_raw_request. The 'POST /groups' prefix implies creation but gives no prerequisites, permissions, or conditions for selecting it over alternatives.

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

snipeit_gen_groupsid_2PUT /groups/{id}C
DestructiveIdempotent

PUT /groups/{id}: Edit a group. Generated from Snipe-IT OpenAPI operation groupsid-2.

NameRequiredDescriptionDefault
idYesGroup ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

The annotations already disclose that this is a destructive, idempotent write made against an open-world API, but the description adds nothing: it does not say whether the PUT replaces the whole group or only updates named fields, what happens to permissions omitted from the body, or that the confirm parameter and SNIPEIT_CONFIRM_WRITES gate a write. Without annotations adding value, the description should explain these behaviors, but it does not.

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?

It is short and front-loads the HTTP path, but the second sentence ('Generated from Snipe-IT OpenAPI operation groupsid-2') is generator noise that conveys nothing to an agent choosing the tool. Brevity here reflects under-specification, not efficient economy.

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 destructive write with a nested request body, a confirmation gate, and no output schema, the description is far too thin. It leaves the caller without the permissions model, the replace-versus-merge behavior, or any routing distinction among the many sibling group endpoint tools.

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%; only 'id' and 'confirm' are documented in the schema, while the required body field 'name' and the 'permissions' field have no guidance. The description explains neither the body structure nor the format of the permissions string, so it adds no meaning beyond the raw schema and does not compensate for the gaps.

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

Purpose3/5

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

It signals the operation as a whole ('PUT /groups/{id}: Edit a group'), which makes the resource and the mutation clear, but 'Edit a group' is only minimally more specific than the tool name. It also does not distinguish this tool from the several other group-related siblings such as snipeit_gen_groupsid, _1, _3, and _4, so an agent cannot tell which group endpoint is which from the description.

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 about when to use this tool versus the other group endpoints, no mention of prerequisites such as required permissions, and no explanation of when the 'confirm' write gate applies. The only clue about usage is the implied 'edit' versus read/create semantics.

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

snipeit_gen_groupsid_3DELETE /groups/{id}C
DestructiveIdempotent

DELETE /groups/{id}: Delete a group. Generated from Snipe-IT OpenAPI operation groupsid-3.

NameRequiredDescriptionDefault
idYesGroup ID
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so safety is covered structurally. The description adds nothing beyond that — it does not say what happens to group members, associated assets, or whether the deletion is soft-deletable, which for a destructive operation on a group is the key missing context.

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?

Very short and front-loaded with the HTTP path and verb, so nothing is buried. But the second sentence is pure generator boilerplate ("Generated from Snipe-IT OpenAPI operation groupsid-3") that consumes space without informing the agent.

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 destructive delete with no output schema and no annotations about side effects, the definition should explain consequences (member removal, cascade effects) and the SNIPEIT_CONFIRM_WRITES condition. Neither appears, leaving the agent under-informed before an irreversible action.

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%, and the schema already documents id ("Group ID") and the conditional confirm constant. The description adds no parameter meaning, so baseline 3 applies.

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

Purpose3/5

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

States a specific verb and resource ("Delete a group"), which is understandable on its own. However, there are at least four other siblings named snipeit_gen_groupsid_1/_2/_4 sharing the same /groups/{id} path, and the description gives no basis for distinguishing this one from them.

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 vs. the other groups/{id} operations, no prerequisites, and no mention of the confirmation requirement or how to recover if the wrong group is deleted. The agent must infer everything from the name and schema.

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

snipeit_gen_groupsid_4PATCH /groups/{id}C
DestructiveIdempotent

PATCH /groups/{id}: Partially edit a group. Generated from Snipe-IT OpenAPI operation groupsid-4.

NameRequiredDescriptionDefault
idYesGroup ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true, and readOnlyHint=false, so the safety profile is carried by structured data. The description adds no context beyond that — it never notes that the edit is destructive, what fields could be overwritten, or that the confirm parameter gates the write, all of which would be valuable for a mutation.

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

Conciseness3/5

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

It is short and front-loaded, but wastes space restating 'PATCH /groups/{id}' which is already in the title, and includes a boilerplate 'Generated from...' clause that carries no value for the agent.

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 destructive mutation with a nested undocumented body and a confirm write-gate, and with no output schema, the description does not convey what changes, required permissions, or confirm semantics. It is inadequate 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 coverage is 67%; the id and confirm parameters are described in-schema, but the nested body object (name, permissions) has no field descriptions. The description adds zero parameter meaning — it never explains the body fields or the confirm write-gate, so it fails to compensate for the gap.

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

Purpose3/5

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

The description states a specific verb ('partially edit') and resource ('a group'), so the basic purpose is clear. However, it offers nothing to distinguish this from the several other groups-related siblings (gen_groupsid, _1, _2, _3) beyond the redundant endpoint restatement, so an agent cannot tell which group mutation to pick.

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 partial edit versus a full update (PUT) sibling, nor any mention of prerequisites or exclusions. 'Partially edit' is the only weak signal, and the alternatives are left entirely to inference.

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

snipeit_gen_hardwareauditPOST /hardware/auditC
Destructive

POST /hardware/audit: Mark an asset as audited. Generated from Snipe-IT OpenAPI operation hardwareaudit.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, openWorldHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds nothing beyond annotations: it does not say what auditing actually changes (audit log entry, last_audit_date, next_audit_date), whether it is reversible, or that confirm=YES may be required. For a destructive, non-idempotent write, that is a clear 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?

It is short and front-loaded, but the front-loading is the redundant HTTP path and the trailing "Generated from Snipe-IT OpenAPI operation hardwareaudit." is pure filler. Two of three clauses carry no decision-relevant 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?

For a destructive, non-idempotent mutation with a nested body and no output schema, the definition should at minimum describe the audit side effects and body field meanings. Instead it gives one sentence of purpose plus generator metadata, leaving the agent under-informed for a write that changes asset records.

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 50% (only the confirm param is documented in-schema), and the description does not compensate at all. The nested body fields asset_tag (required), location_id and next_audit_date are never explained — an agent gets no hint about whether location_id reassigns the asset or whether next_audit_date is a date format string.

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

Purpose3/5

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

"Mark an asset as audited" is a specific verb+resource, which is better than tautology. But the description never distinguishes this from near-identical siblings such as snipeit_audit_hardware and snipeit_gen_post_auditid, leaving an agent unable to choose between them. The leading HTTP path restates the title rather than adding meaning.

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 statement of when to use this operation versus the many overlapping audit/update siblings, and no prerequisites such as the asset needing to already exist or be assigned. The only implied guidance comes from the word "audit" itself.

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

snipeit_gen_hardwareauditdueGET /hardware/audit/dueB
Read-onlyIdempotent

GET /hardware/audit/due: Retrieve a list of assets that are due for auditing soon. Generated from Snipe-IT OpenAPI operation hardwareauditdue.

NameRequiredDescriptionDefault
sortNoColumn to sort by (not declared in the spec for this operation, added by codegen)
limitNoPage size (not declared in the spec for this operation, added by codegen)
orderNoSort order (not declared in the spec for this operation, added by codegen)
offsetNoRows to skip (not declared in the spec for this operation, added by codegen)
searchNoText search (not declared in the spec for this operation, added by codegen)

TDQS

B3.2/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that results are assets due for auditing soon, but it does not disclose pagination behavior or response shape. With annotations doing most of the work, this is adequate but not rich.

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

Conciseness4/5

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

The description is short and front-loads the purpose in the first sentence. The second sentence about being generated from the Snipe-IT OpenAPI operation adds little invocation value, but the overall text remains compact and 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?

For a simple read-only list operation with full schema coverage and strong annotations, the core purpose is covered. However, no output schema exists and the description does not clarify how this differs from the near-identical snipeit_list_audit_due sibling or what the returned asset list contains.

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%, so the schema already documents all five optional parameters. The description adds no parameter-level meaning such as default sort order, search scope, or pagination limits beyond what the schema 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 specific verb and resource: retrieve a list of assets due for auditing soon. It is clear what the tool returns, but it does not distinguish this operation from sibling tools such as snipeit_list_audit_due, snipeit_list_audit_overdue, or snipeit_gen_hardwareauditoverdue.

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 when-to-use guidance, no exclusions, and no alternatives. An agent must infer whether to call this tool versus the similarly named snipeit_list_audit_due or the overdue-audit siblings.

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

snipeit_gen_hardwareauditoverdueGET /hardware/audit/overdueB
Read-onlyIdempotent

GET /hardware/audit/overdue: Retrieve a list of assets that are overdue for auditing. Generated from Snipe-IT OpenAPI operation hardwareauditoverdue.

NameRequiredDescriptionDefault
sortNoColumn to sort by (not declared in the spec for this operation, added by codegen)
limitNoPage size (not declared in the spec for this operation, added by codegen)
orderNoSort order (not declared in the spec for this operation, added by codegen)
offsetNoRows to skip (not declared in the spec for this operation, added by codegen)
searchNoText search (not declared in the spec for this operation, added by codegen)

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered structurally. The description adds only the business meaning of 'overdue for auditing' and says nothing about pagination behavior, result volume, or what determines overdue status — a modest but real contribution given the annotation coverage.

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

Conciseness4/5

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

Two short sentences with the purpose stated first, which is well front-loaded. The second sentence ('Generated from Snipe-IT OpenAPI operation hardwareauditoverdue') is low-value boilerplate that largely repeats the path already in the title.

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?

With no output schema, five optional query parameters, and several near-duplicate sibling endpoints, the description should say more about what is returned and how this differs from the 'due' and raw variants. It leaves the agent to guess on both counts.

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?

All five parameters (sort, limit, order, offset, search) are documented at 100% in the schema, though each notes it was codegen-added and not in the spec. The description contributes no parameter semantics at all, so the baseline 3 applies when the schema does all the work.

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 gives a specific verb and resource: 'Retrieve a list of assets that are overdue for auditing,' which an agent can understand without opening the schema. However, the massive sibling set contains near-identical operations (snipeit_list_audit_overdue, snipeit_gen_hardwareauditdue) and the description does nothing to distinguish this one from them, 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 call this versus snipeit_gen_hardwareauditdue ('due') or the duplicate snipeit_list_audit_overdue, nor any mention of prerequisites such as audit-interval configuration. The agent must infer the due-vs-overdue distinction entirely from tool names.

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

snipeit_gen_hardware_by_asset_tagGET /hardware/bytag/{asset_tag}C
Read-onlyIdempotent

GET /hardware/bytag/{asset_tag}: Get the details of a specific asset by asset tag. Generated from Snipe-IT OpenAPI operation hardware-by-asset-tag.

NameRequiredDescriptionDefault
deletedNotrue | false to include deleted items in your results
asset_tagYesThe asset_tag (not the ID) of the asset you'd like to query

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnly=true, idempotent=true, destructive=false, openWorld=true, so the safety profile is covered. The description adds nothing beyond them: no note on what a missing tag returns (404 vs empty), whether the response includes custom fields/relations, or how the `deleted` flag changes results.

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?

Very short and front-loaded, with no filler in the substantive sentence. It loses a point because the leading "GET /hardware/bytag/{asset_tag}:" prefix and the "Generated from Snipe-IT OpenAPI operation" sentence are pure metadata noise rather than added meaning.

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 annotated read with a fully documented two-parameter schema, this is minimally sufficient to invoke the tool. However, with no output schema the description should at least characterize what the single-asset payload contains, and 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?

Schema description coverage is 100%, and the schema already explains both `asset_tag` ("not the ID") and `deleted` ("include deleted items"). The description contributes no additional parameter meaning or examples, so the baseline 3 is appropriate.

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

Purpose3/5

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

The description states a verb and resource ("Get the details of a specific asset"), so the intent is legible, but the first half is a literal restatement of the title/path and the second is generator boilerplate. It never distinguishes this from the crowded set of near-identical siblings (snipeit_get_hardware_by_tag, snipeit_get_hardware_by_serial, snipeit_gen_hardware_by_id, snipeit_get_hardware_by_id).

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 indication of when to use asset-tag lookup versus the tag, serial, or ID variants, and no mention that snipeit_get_hardware_by_tag appears to be an equivalent/overlapping sibling. An agent has no textual basis for choosing among these lookup tools.

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

snipeit_gen_hardware_by_idGET /hardware/{id}C
Read-onlyIdempotent

GET /hardware/{id}: Get the details of a specific asset. Generated from Snipe-IT OpenAPI operation hardware-by-id.

NameRequiredDescriptionDefault
idYesThe id (not the asset tag) of the asset you'd like to query

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare read-only, idempotent, open-world, non-destructive behavior. The description adds almost no behavioral context beyond restating the GET operation and noting it is OpenAPI-generated; it does not mention error behavior, auth, or response characteristics.

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 short and front-loaded with the operation. The second sentence about OpenAPI generation is low-value, but the overall structure is 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 single-parameter read operation with rich annotations and full schema coverage, this is minimally adequate. However, it lacks sibling differentiation and does not describe response or error behavior, leaving some context gaps.

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%, and the schema itself clarifies that the id is not the asset tag. The description does not add parameter meaning beyond that, 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?

States a clear verb and resource: retrieves details for a specific hardware asset by ID via GET /hardware/{id}. It is understandable, but it does not distinguish itself from sibling tools like snipeit_get_hardware_by_id, get_hardware_by_tag, or get_hardware_by_serial.

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?

Provides no explicit when-to-use guidance or comparison to alternatives. The endpoint implies lookup by ID, but the description does not tell the agent when to choose this over by-tag, by-serial, list, or search tools.

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

snipeit_gen_hardware_by_serialGET /hardware/byserial/{serial}C
Read-onlyIdempotent

GET /hardware/byserial/{serial}: Get the details of a specific asset by asset tag. Generated from Snipe-IT OpenAPI operation hardware-by-serial.

NameRequiredDescriptionDefault
serialYesThe serial number (not the ID) of the asset you'd like to query
deletedNotrue | false to include deleted items in your results

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered without description help. The description adds nothing beyond that — no note on the `deleted` inclusion flag's effect, no statement about what a miss returns, only a provenance line about OpenAPI generation. It does not contradict the annotations, but it carries no extra behavioral weight.

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?

It is short and the purpose statement leads, but the second sentence ("Generated from Snipe-IT OpenAPI operation hardware-by-serial") is boilerplate that consumes half the text without informing invocation. Not padded, but not fully earning its space either.

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-only two-parameter GET, the schema plus annotations cover most needs, and there is no output schema the description would need to explain. Still, the agent gets no picture of what the response contains or how a not-found serial behaves, and the tag/serial confusion leaves a real gap.

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 100%, so the baseline is 3, but the description's phrase "by asset tag" is inconsistent with the `serial` parameter, which the schema correctly describes as "The serial number (not the ID)." That mismatch risks the agent passing a tag value, so it subtracts rather than adds meaning.

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

Purpose3/5

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

The description gives a verb and resource ("Get the details of a specific asset") and the path makes the lookup key clear, but it then says "by asset tag," which contradicts the {serial} path segment and the `serial` parameter. With siblings snipeit_get_hardware_by_tag and snipeit_get_hardware_by_id in the same family, this mislabeling actively blurs the distinction the agent needs.

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 serial lookup versus asset-tag lookup, ID lookup, or the broader snipeit_search_hardware / snipeit_list_hardware tools. The only usage cue is implicit in the path. No exclusions or alternatives are named.

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

snipeit_gen_hardware_checkinPOST /hardware/{id}/checkinC
Destructive

POST /hardware/{id}/checkin: Checkin an asset. Generated from Snipe-IT OpenAPI operation hardware-checkin.

NameRequiredDescriptionDefault
idYesThe id (not the asset tag) of the asset you'd like to query
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say what state change occurs (status_id is required to apply), that the action is not idempotent, or what happens to the asset's prior assignment history.

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?

It is short and front-loaded, but one of its two sentences is boilerplate ('Generated from Snipe-IT OpenAPI operation hardware-checkin') and the leading URL path repeats the title verbatim. Nothing is wasted on length, yet very little is said.

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 destructive, non-idempotent mutation with a nested required body, a confirmation gate, and no output schema. For that level of complexity the description should explain the required status_id, the confirm gate, and the outcome of a successful checkin, none of which 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 description mentions no parameters at all, while the schema documents 'id' and 'confirm' but leaves the nested body fields (name, note, status_id, location_id) and the required status_id semantically unexplained. With only 67% schema coverage and a nested object, the description does not compensate for the gap.

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

Purpose3/5

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

The description pairs a specific verb ('Checkin') with a resource ('asset'), which is clearer than the raw endpoint path alone. However, it offers no differentiation from the near-identical sibling snipeit_checkin_hardware, nor from snipeit_checkout_hardware, so an agent cannot tell which to pick from the text.

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, no prerequisites (e.g., the asset must currently be checked out), and no mention of alternatives such as snipeit_checkin_hardware. The only usage hint in the entire definition lives in the schema's 'confirm' parameter, not the description.

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

snipeit_gen_hardware_checkoutPOST /hardware/{id}/checkoutC
Destructive

POST /hardware/{id}/checkout: Checkout an asset to a user, location or another asset. Generated from Snipe-IT OpenAPI operation hardware-checkout.

NameRequiredDescriptionDefault
idYesThe id (not the asset tag) of the asset you'd like to query
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it never mentions the confirm="YES" write gate, the requirement for a deployable status_id, or side effects such as the asset's status changing and appearing in the user's asset list. 'Generated from Snipe-IT OpenAPI operation' is provenance boilerplate, not behavior.

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?

It is short and front-loads the operation, but the redundant 'POST /hardware/{id}/checkout:' prefix and the 'Generated from ...' sentence occupy half the text without adding meaning.

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 destructive mutation tool with no output schema and a nested body whose fields are undocumented, the description leaves out prerequisites (confirm gate, status_id semantics), linkage rules between checkout_to_type and the assigned_* fields, and expected outcomes. An agent would have to infer most of what it needs.

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 67%, and the nested body object has eight properties with zero descriptions in the schema, so the description must compensate. It only hints that the target is a user, location or asset, without explaining that assigned_user/assigned_location/assigned_asset must correspond to checkout_to_type, or what status_id, checkout_at and expected_checkin mean. Required-field and confirmation semantics are left entirely to 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?

States a specific verb and resource ('Checkout an asset') and names the three possible checkout targets, which is more informative than the bare title. However, it does not distinguish this generated endpoint from the near-identical sibling snipeit_checkout_hardware, so an agent still cannot choose between them from the description alone.

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 versus snipeit_checkout_hardware, snipeit_bulk_checkout, or the accessory/consumable/component checkout variants. The only context given is the HTTP path, which is not a usage rule.

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

snipeit_gen_hardware_createPOST /hardwareC
Destructive

POST /hardware: Creates a new asset. Generated from Snipe-IT OpenAPI operation hardware-create.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=false, so the safety profile is structurally known. The description adds no behavioral context beyond restating that it creates an asset; it does not explain the destructive implication or the confirm safeguard.

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 short and front-loaded, but the second clause about being generated from an OpenAPI operation adds little value to an agent. It is concise to the point of under-specification for a destructive creation tool.

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 complex mutation with a nested body, destructive annotations, and no output schema, so the description should do more to explain operational expectations. It omits required-field semantics, confirmation behavior, and side effects, leaving significant 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?

Schema description coverage is only 50%, with the nested body object's asset fields undocumented. The description mentions no parameters and does not explain the required asset_tag, status_id, model_id, or the confirm string beyond what the schema itself 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 specific verb and resource: POST /hardware creates a new asset. It is clear what the tool does, but it does not distinguish this generated endpoint from the sibling snipeit_create_hardware or related update tools.

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 says only that it creates a new asset, with no guidance on when to use it versus snipeit_create_hardware or snipeit_raw_request. It provides no prerequisites, exclusions, or alternative-selection criteria.

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

snipeit_gen_hardware_deleteDELETE /hardware/{id}C
DestructiveIdempotent

DELETE /hardware/{id}: Deletes a specific asset. Generated from Snipe-IT OpenAPI operation hardware-delete.

NameRequiredDescriptionDefault
idYesThe id of the asset to delete
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered externally. The description adds nothing beyond that — it does not say whether deletion is permanent or soft (relevant given the sibling snipeit_gen_hardwareidrestore exists), nor what happens to checked-out assets, licenses, or audit history attached to the asset.

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?

Very short and front-loaded, but the second sentence ('Generated from Snipe-IT OpenAPI operation hardware-delete') adds no actionable information and merely restates the endpoint as a generated artifact name.

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 destructive mutation in a toolset containing both snipeit_delete_hardware and snipeit_gen_hardware_delete, the description needs to explain the difference and the soft-delete/restore semantics. It omits all of that, leaving ambiguity an agent cannot resolve from the description alone.

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%, so the schema fully documents both 'id' and 'confirm'. The description adds no syntax or format detail beyond the schema, which is the baseline expectation when schema carries the load.

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

Purpose3/5

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

States a specific verb and resource ('Deletes a specific asset') with the endpoint path, so the basic action is clear. However, it does nothing to distinguish itself from sibling tools like snipeit_delete_hardware, snipeit_gen_hardwareidrestore, or the raw request tool, leaving an agent unable to tell which delete endpoint to pick.

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 versus the near-duplicate snipeit_delete_hardware, no mention of the confirm='YES' requirement, and no note about the restore alternative. The agent must infer everything from the endpoint string.

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

snipeit_gen_hardware_files_deleteDELETE /hardware/{id}/files/{file_id}/deleteC
DestructiveIdempotent

DELETE /hardware/{id}/files/{file_id}/delete: /hardware/:id/files/:file_id. Generated from Snipe-IT OpenAPI operation hardware-files-delete.

NameRequiredDescriptionDefault
idYesID of the asset whose file you want to delete
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
file_idYesID of the specific file for that asset you wish to delete

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond the path — no note that the file is permanently removed, what happens to missing IDs, or anything about the confirm requirement (which lives in the schema).

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

Conciseness2/5

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

It is short, but the content is wasted: the path appears twice and the "Generated from Snipe-IT OpenAPI operation" boilerplate helps no agent decide or invoke. Nothing substantive is front-loaded.

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 destructive delete with no output schema, the description should say what is removed and any preconditions; instead it only restates routing. Annotations carry the destructive flag, but the description is not informative enough on its own.

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 clear descriptions for id, file_id and confirm, so the schema does all the work. The description adds no parameter meaning beyond echoing the path placeholders, which fits the baseline 3 for high-coverage schemas.

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 is essentially the URL path restated twice ("DELETE /hardware/{id}/files/{file_id}/delete: /hardware/:id/files/:file_id"), which is tautological with the title. An agent can infer it deletes an asset's file, but the description never says so in plain language or distinguishes it from sibling file operations like snipeit_gen_hardwareidfilesfile_id or snipeit_gen_hardware_upload_files.

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 over the other file-related siblings, no prerequisite notes, and no mention that the operation is irreversible. The only clue is the HTTP verb in the path.

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

snipeit_gen_hardwareidfilesfile_idGET /hardware/{id}/files/{file_id}B
Read-onlyIdempotent

GET /hardware/{id}/files/{file_id}: Download a hardware file. Generated from Snipe-IT OpenAPI operation hardwareidfilesfile_id.

NameRequiredDescriptionDefault
idYesID of the asset the file is associated with
file_idYesID of the associated file you'd like to download

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and openWorld, so the safety profile is covered. The description adds only the useful signal that the operation retrieves content ('Download'), but says nothing about the response being a binary/file stream, headers, or whether auth/token scope is needed.

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 action front-loaded. The 'Generated from Snipe-IT OpenAPI operation hardwareidfilesfile_id' clause is metadata noise rather than user-facing value, keeping it out of the top score.

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?

There is no output schema, so the description should convey what comes back, yet it never states that the result is file bytes/content rather than JSON metadata. Combined with the missing prerequisite (file_id must come from a prior list call), it is adequate but leaves a real gap.

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% and both parameters are documented there ('ID of the asset', 'ID of the associated file you'd like to download'), so the description is not required to explain them. It adds no format, ordering, or resolution detail beyond the schema; baseline 3 applies.

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 a specific verb and resource — 'Download a hardware file' scoped to a single asset/file pair. This is distinguishable from siblings like snipeit_gen_hardware_list_files (enumerate) and snipeit_gen_hardware_upload_files (write), even though it does not name them explicitly.

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 when-to-use guidance, no prerequisites, and no comparison to the list/upload/delete file siblings. An agent must infer that it needs a known file_id (i.e., call list_files first) entirely on its own.

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

snipeit_gen_hardwareidlicensesGET /hardware/{id}/licensesA
Read-onlyIdempotent

GET /hardware/{id}/licenses: Get the licenses checked out to an asset. Generated from Snipe-IT OpenAPI operation hardwareidlicenses.

NameRequiredDescriptionDefault
idYesThe id (not the asset tag) of the asset you'd like to query

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint. The description adds almost no behavioral context beyond restating the operation: it omits response shape, pagination, auth or rate-limit details. With annotations carrying the safety profile, a 3 is appropriate.

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

Conciseness4/5

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

Two short sentences, front-loaded with the operation and purpose. It wastes a little space repeating the endpoint path already present in the title and including the 'Generated from...' boilerplate, but it remains efficient.

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

Completeness4/5

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

For a simple read-only GET with one fully documented parameter and rich annotations, the description is sufficient. It could mention return shape or pagination since there is no output schema, but the core information needed to select and call the tool is present.

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%, and the schema already documents that 'id' is the asset id, not the asset tag. The description adds no parameter semantics beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource: 'Get the licenses checked out to an asset', scoped by hardware id. It is clear what the tool returns, but it does not explicitly differentiate itself from sibling license tools such as snipeit_get_user_licenses or snipeit_list_licenses.

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 by the phrase 'checked out to an asset', but the description gives no explicit when-to-use guidance, no exclusions, and no named alternatives. An agent can infer the context, but it must rely on the resource scope rather than stated guidance.

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

snipeit_gen_hardwareidrestorePOST /hardware/{id}/restoreB
Destructive

POST /hardware/{id}/restore: Restore a deleted asset. Generated from Snipe-IT OpenAPI operation hardwareidrestore.

NameRequiredDescriptionDefault
idYesPath parameter 'id' (not declared in the spec, synthesized by codegen)
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare this as a non-idempotent, destructive, open-world write, so the safety profile is covered. The description adds that it restores a deleted asset, but does not mention permissions, the confirm gate, or what happens if the asset is not deleted.

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, front-loaded with the action. The second sentence is generated-from metadata of marginal value, but overall it is efficiently sized.

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

Completeness3/5

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

For a simple mutation whose schema and annotations are rich, the description covers the core action. It omits important context such as confirmation requirements and preconditions (asset must be deleted), leaving the agent to rely entirely on schema and annotations.

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%, so the schema already explains both the id path parameter and the confirm write gate. The description adds no parameter semantics beyond what the schema provides; baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Restore a deleted asset') and names the endpoint, so the agent can tell this is an undelete operation for hardware. It does not explicitly differentiate itself from sibling restore tools like snipeit_gen_users_restore, but the hardware scope is clear.

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 versus delete/update or other restore operations, and no prerequisites are stated. The name and description imply restoring a deleted asset, but alternatives and exclusions are left to inference.

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

snipeit_gen_hardware_listGET /hardwareC
Read-onlyIdempotent

GET /hardware: Return a listing of assets. Generated from Snipe-IT OpenAPI operation hardware-list.

NameRequiredDescriptionDefault
sortNoSpecify the column name you wish to sort by
limitNoSpecify the number of results you wish to return. Defaults to 50, but we have it set to 2 by default so the API explorer doesn't scroll forever.
orderNoSpecify the order (asc or desc) you wish to order by on your sort column
filterNoKey value pair of the field you want to search on and the value, for example: `{"name":"hello","asset_tag":"12345"}`
offsetNoOffset to use
searchNoA text string to search the assets data for
statusNoOptionally restrict asset results to one of these status types: RTD, Deployed, Undeployable, Deleted, Archived, Requestable
model_idNoOptionally restrict asset results to this asset model ID
status_idNoOptionally restrict asset results to this status label ID
company_idNoOptionally restrict asset results to this company ID
assigned_toNo
category_idNoOptionally restrict asset results to this status label ID
location_idNoOptionally restrict asset results to this location ID
order_numberNoReturn only assets associated with a specific order number
assigned_typeNo
manufacturer_idNoOptionally restrict asset results to this asset model ID

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing beyond a provenance note ('Generated from Snipe-IT OpenAPI operation'), omitting pagination defaults, result caps, and response shape.

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

Conciseness3/5

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

Two short sentences with no filler, but the leading 'GET /hardware:' merely repeats the title and the 'Generated from...' clause conveys no operational value. Concise, but the space is not spent on anything useful.

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 16-parameter listing endpoint with no output schema, the description should explain pagination behavior, default result limits, and how the filtering parameters combine. None of that is present, so the agent is left to infer call semantics entirely from the schema.

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 88%, so the schema itself documents nearly every parameter including sort, limit, filter, and status. The description contributes no additional parameter meaning, which matches the baseline 3 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.

Purpose3/5

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

The description states the verb and resource ('Return a listing of assets'), which is marginally more than the title. But it does not distinguish this tool from the many sibling list/search tools (snipeit_list_hardware, snipeit_search_hardware, snipeit_gen_hardware_by_id, etc.), leaving the agent unable to tell which listing endpoint to pick.

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 when-to-use guidance, no prerequisites, and no mention of any alternative. With ~16 sibling hardware tools in the namespace, the description gives the agent nothing to route on.

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

snipeit_gen_hardware_list_filesGET /hardware/{id}/filesC
Read-onlyIdempotent

GET /hardware/{id}/files: List uploaded files for an asset. Generated from Snipe-IT OpenAPI operation hardware-list-files.

NameRequiredDescriptionDefault
idYesID of the asset

TDQS

C2.9/5.0
Behavior2/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. The description adds nothing behavioral beyond restating the title: no pagination, no indication of what metadata each file entry carries, no note that an empty list is returned for assets without uploads.

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, the plain-language purpose first and the path second; no wasted preamble. The 'Generated from Snipe-IT OpenAPI operation hardware-list-files' clause is boilerplate provenance but is compact and does no harm.

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-only list endpoint with full schema coverage and rich annotations, the description is adequate but thin. It omits any sense of the response shape (file names, sizes, URLs) and pagination behavior, which is not covered by an output schema.

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?

There is a single parameter with 100% schema coverage ('ID of the asset'), so the schema already does the work. The description's path template reinforces that the id refers to a hardware asset but adds no format or sourcing guidance beyond the schema, making 3 the correct baseline.

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 gives a specific verb and resource, 'List uploaded files for an asset', plus the concrete path GET /hardware/{id}/files. It does not distinguish this from close siblings such as snipeit_gen_hardwareidfilesfile_id (single-file retrieval) or snipeit_gen_hardware_files_delete, leaving the agent to infer the boundary from names alone.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus alternatives, no prerequisite about the asset having files uploaded, and no pointer to snipeit_gen_hardware_upload_files for the write counterpart. The only implied guidance is the required asset id in the path.

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

snipeit_gen_hardware_partial_updatePATCH /hardware/{id}C
DestructiveIdempotent

PATCH /hardware/{id}: Partially updates a specific asset. Generated from Snipe-IT OpenAPI operation hardware-partial-update.

NameRequiredDescriptionDefault
idYesThe id of the asset you'd like to query
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not disclose that omitted fields may be cleared, that a confirmation gate exists, or any permission requirements. It does not contradict the annotations, but it contributes no behavioral context of its own.

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?

It is short and front-loads the route and action, which is good. The second sentence, 'Generated from Snipe-IT OpenAPI operation hardware-partial-update', is boilerplate that conveys nothing actionable and consumes half the 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?

This is a destructive write with a large nested body and a confirmation requirement, and there is no output schema to fall back on. The description covers none of the risk-relevant context an agent needs before mutating a production asset record.

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 67%, and the nested body object exposes roughly 20 fields with no descriptions anywhere. The description says nothing about which fields are patchable, the type quirks (location_id is a string while rtd_location_id is an integer), or the confirm='YES' gate, so 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.

Purpose4/5

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

States a specific verb and resource ('Partially updates a specific asset') plus the HTTP route, which makes PATCH semantics distinguishable from a full PUT update. It does not name sibling alternatives like snipeit_update_hardware or snipeit_gen_hardware_update, so an agent must infer which update variant to pick.

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 word 'Partially' hints at sending only changed fields, but there is no explicit when-to-use guidance, no contrast with the full-update siblings, and no mention that the 'confirm' parameter may be required. The agent is left to infer routing between near-identical update tools.

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

snipeit_gen_hardware_updatePUT /hardware/{id}C
DestructiveIdempotent

PUT /hardware/{id}: Updates a specific asset. Generated from Snipe-IT OpenAPI operation hardware-update.

NameRequiredDescriptionDefault
idYesThe id of the asset you'd like to query
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false. The description adds no behavioral detail beyond 'Updates'—it does not explain full-replacement semantics, overwrite risk, permission needs, or the SNIPEIT_CONFIRM_WRITES confirmation flow that appears only in the schema.

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

Conciseness4/5

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

Two short sentences, front-loaded with the operation. The generated-from-OpenAPI boilerplate adds little, but the definition is not bloated.

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 destructive nested-body PUT with a confirmation token and many overlapping hardware-update siblings, the description is too thin. It omits confirmation requirements, full-replacement behavior, and sibling routing.

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%; id and confirm have descriptions, but the nested body fields largely do not. The description contributes nothing about the required body fields or the confirm token, so it does not compensate for the remaining parameter gaps.

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 names a specific verb ('Updates') and resource ('a specific asset'), and the title supplies the PUT /hardware/{id} route. It does not distinguish this operation from siblings such as snipeit_update_hardware or snipeit_gen_hardware_partial_update, 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?

There is no when-to-use statement, no mention of alternatives like partial update, and no prerequisites. The only usage hint is the HTTP method in the title, leaving selection entirely inferred.

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

snipeit_gen_hardware_upload_filesPOST /hardware/{id}/filesA
Destructive

POST /hardware/{id}/files: To upload multiple files to an asset, send file as an array, such as file[]. See below for details. Generated from Snipe-IT OpenAPI operation hardware-upload-files. File uploads do not work through this tool: Snipe-IT expects multipart/form-data and this tool sends JSON (the vendored spec declares JSON). Upload files in the Snipe-IT web UI.

NameRequiredDescriptionDefault
idYesID of the asset to upload files to
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the write semantics are covered. On top of that the description discloses a non-obvious failure mode: the vendored spec declares JSON but Snipe-IT expects multipart/form-data, so every call fails. That is exactly the behavioral context an agent cannot derive from structured fields.

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

Conciseness4/5

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

Roughly four sentences with no filler, and the operative do-not-use warning arrives early. Minor waste: 'See below for details' points at nothing, and the payload-shape note is split between the first and third sentence.

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 three-parameter write with no output schema, the description answers the questions that matter: what it does, why it will fail here, and what to do instead. It doesn't cover response shape or whether an asset must exist first, but those are secondary given the tool is effectively unusable.

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 67% and the description adds the array form (`file[]`) for multiple uploads, which the schema does not indicate. However, that also conflicts with the schema, which declares `file` as a plain string, and the `confirm` gate is left to the schema. The added detail is real but partly contradictory.

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 (upload files to an asset at POST /hardware/{id}/files) and implicitly distinguishes itself from siblings like snipeit_gen_hardware_list_files and snipeit_gen_hardwareidfilesfile_id. It doesn't explicitly name those siblings, so the differentiation is inferable rather than stated.

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

Usage Guidelines4/5

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

It gives a strong negative guideline: do not use this tool, upload via the Snipe-IT web UI because multipart/form-data is required. It stops short of naming in-server alternatives such as snipeit_raw_request, which would be the natural fallback when a caller controls content-type.

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

snipeit_gen_licensesGET /licensesC
Read-onlyIdempotent

GET /licenses: Return a listing of licenses. Generated from Snipe-IT OpenAPI operation licenses.

NameRequiredDescriptionDefault
nameNo
sortNoSpecify the column name you wish to sort by
limitNoSpecify the number of results you wish to return
orderNoSpecify the order (asc or desc) you wish to order by on your sort column
expandNoWhether to include detailed information on categories, etc (true) or just the text name (false)
offsetNoOffset to use
searchNoA text string to search the assets data for
deletedNoSet to true to return deleted licenses
maintainedNotrue / false
category_idNoCategory ID
product_keyNo
supplier_idNoSupplier ID
license_nameNoName of the person on the license
order_numberNoReturn only assets associated with a specific order number
license_emailNoEmail address associated with license
purchase_orderNo
depreciation_idNoDepreciation ID
manufacturer_idNoManufacturer ID

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered structurally. The description adds nothing beyond that — no note on pagination defaults, result caps, or how the 18 filters combine. For a list endpoint with many filters and no output schema, that is a real 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?

It is short and front-loaded with the resource, which is good. But the second sentence, "Generated from Snipe-IT OpenAPI operation licenses," is generator boilerplate that conveys nothing about behavior and occupies half the text.

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?

An 18-parameter listing tool with no output schema and no documented return shape needs more: pagination behavior (limit/offset semantics), default sort/order, or response envelope. None of that is present, leaving the definition inadequate for correct invocation.

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 83%, so the schema carries most of the parameter meaning and a baseline of 3 applies. The description contributes no additional semantics (e.g., how `search` interacts with `name`, or whether `deleted` and `maintained` combine), so it neither helps nor hurts beyond baseline.

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

Purpose3/5

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

The description states a verb and resource ("Return a listing of licenses"), so the basic operation is clear. However, it does nothing to distinguish this from the closely-named sibling `snipeit_list_licenses`, leaving an agent unable to choose between them from the text alone.

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 rather than `snipeit_list_licenses`, `snipeit_get_user_licenses`, or `snipeit_raw_request`. The only framing is the raw HTTP path, which is not actionable selection guidance.

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

snipeit_gen_licensesidGET /licenses/{id}C
Read-onlyIdempotent

GET /licenses/{id}: /licenses/:id. Generated from Snipe-IT OpenAPI operation licensesid.

NameRequiredDescriptionDefault
idYesThe id (not name) of the license.

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the safety profile is fully covered by structured data. The description adds nothing beyond that: it does not say what a missing id returns (404 vs empty), whether the response includes seats or custom fields, or anything about permissions. The bar is lower with annotations present, but here the description contributes zero 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.

Conciseness3/5

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

It is short and front-loaded, so it does not waste the reader's time. However, the second clause '/licenses/:id' is a literal duplicate of the first, and the OpenAPI provenance note consumes roughly half the text without informing tool selection. Brevity here reflects under-specification rather than discipline.

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?

There is no output schema, so the description carries the burden of saying what the call returns, and it says nothing — an agent cannot tell whether it gets a license object, seats, or a wrapped envelope. For a simple single-record GET the annotations cover risk, but the return shape and the not-found behavior remain undocumented.

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% and the single parameter is documented in-schema as 'The id (not name) of the license,' which is genuinely useful. The description adds no parameter meaning of its own; the '/licenses/{id}' path echo conveys nothing the schema does not. 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.

Purpose2/5

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

The description merely restates the tool name and URL path ('GET /licenses/{id}: /licenses/:id'), adding a provenance note about OpenAPI generation. An agent can infer it retrieves a license by id, but only from the HTTP verb and path, not from any stated purpose. It does nothing to distinguish this from the many near-identical siblings such as snipeit_gen_licensesid_1, _2, _3 or snipeit_list_licenses.

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 when-to-use guidance, no exclusions, and no mention of alternatives. Given the sibling set contains snipeit_list_licenses and three other tools with essentially the same 'licensesid' name, the absence of routing information is a real cost. The verb 'GET' implicitly signals a read of a single record, which is the only weak usage cue.

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

snipeit_gen_licensesid_1PUT /licenses/{id}D
DestructiveIdempotent

PUT /licenses/{id}: /licenses/:id. Generated from Snipe-IT OpenAPI operation licensesid-1.

NameRequiredDescriptionDefault
idYesID (not name) of license being updated
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

D1.5/5.0
Behavior1/5

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

Annotations declare destructiveHint=true, idempotentHint=true, openWorldHint=true, readOnlyHint=false, so the description should explain what a destructive PUT on a license actually does (overwrites fields, partial vs full replace, category_id required). Instead it adds zero context beyond the annotations and the 'Generated from OpenAPI operation' note, which tells the agent nothing about 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?

It is short, but every sentence is filler: a repeated path and a provenance note. Brevity here comes from under-specification, not economy.

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?

A destructive mutation tool with a nested 18-field body, no output schema, and only 67% schema coverage. The description provides nothing about return behavior, required vs optional body fields, or the confirm gate — far below what an agent needs to call it safely.

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% and the id and confirm parameters are documented in the schema itself. The description adds no meaning to the large nested body (18 fields, category_id required) and says nothing about the confirm=YES write gate, which is a non-obvious operational requirement worth surfacing in prose.

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 is essentially the tool name and title restated: 'PUT /licenses/{id}: /licenses/:id.' Only the HTTP verb implies an update; no resource domain (licenses) semantics, no statement of what updating a license entails, and no differentiation from the many sibling license tools (snipeit_gen_licensesid, _2, _3, seats variants).

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

Usage Guidelines1/5

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

No when-to-use guidance, no alternatives named, no prerequisites. Given ~10 license-related siblings, the agent gets no routing signal at all.

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

snipeit_gen_licensesid_2PATCH /licenses/{id}D
DestructiveIdempotent

PATCH /licenses/{id}: /licenses/:id. Generated from Snipe-IT OpenAPI operation licensesid-2.

NameRequiredDescriptionDefault
idYesID (not name) of license being updated
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

D1.7/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered externally. The description adds no context of its own — nothing about which fields get replaced, whether the PATCH is partial vs full, or the SNIPEIT_CONFIRM_WRITES workflow beyond what the schema already states for `confirm`.

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?

It is short, but the two clauses say the same thing (path repeated twice) and the third clause is generator boilerplate that conveys nothing an agent can act on. There is no front-loaded statement of what the operation actually does.

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?

This is a destructive, open-world mutation with a large nested body object and no output schema. For that complexity, the description provides essentially nothing — no field semantics, no confirmation behavior beyond the schema's own const, no effects of the update. Completely inadequate for the tool's risk profile.

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 a moderate 67%: the `id` and `confirm` params are documented in-schema, but the nested `body` object's ~20 properties have no descriptions at all. The description offers no clarification of body field semantics, partial-update behavior, or which fields are required, so it fails to compensate for the uncovered nested parameters.

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 restates the HTTP verb and path already present in the name and title ("PATCH /licenses/{id}: /licenses/:id"), which is essentially a tautology. It never says in plain language that it updates a license record's fields, nor does it distinguish this from sibling tools like snipeit_gen_licensesid_1, snipeit_gen_licensesid_3, or snipeit_gen_put_licensesidseatsseat_id.

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

Usage Guidelines1/5

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

There is no guidance about when to use this tool, when not to, or which sibling to choose instead. The only content is the endpoint path and a generator provenance note, leaving selection entirely to inference from the name.

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

snipeit_gen_licensesid_3DELETE /licenses/{id}C
DestructiveIdempotent

DELETE /licenses/{id}: /licenses/:id. Generated from Snipe-IT OpenAPI operation licensesid-3.

NameRequiredDescriptionDefault
idYesID (not name) of license to delete
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, openWorldHint=true, so the safety profile is fully covered structurally. The description adds nothing of its own: it does not say what deletion cascades to (seats, assigned users), whether it is soft-delete/restorable, or that a confirmation string may be required. It does not contradict annotations, but it contributes no 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.

Conciseness3/5

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

It is short, but it wastes its only content on duplicated route text and OpenAPI generator boilerplate ("Generated from Snipe-IT OpenAPI operation licensesid-3"). The verb is front-loaded, yet nothing functionally useful follows it.

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 destructive, open-world delete with no output schema, an agent needs to know the consequences and irreversibility of the operation. Annotations cover the safety flags and the schema covers both parameters, but the description supplies no operational context (cascade behavior, error conditions, restore path).

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 schema already states that id is the numeric license ID (not name) and that confirm must be exactly "YES" when SNIPEIT_CONFIRM_WRITES is true. The description adds no additional parameter meaning, so the baseline 3 applies.

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 restates the title and name verbatim ("DELETE /licenses/{id}") and adds a redundant path fragment "/licenses/:id". It does convey a verb and resource, but there is nothing to distinguish it from the many sibling license operations (snipeit_gen_licensesid, _1, _2, seats, etc.) beyond the HTTP method.

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 delete versus sibling license endpoints, no prerequisites (e.g., must the license have no checked-out seats?), and no mention of alternatives. The only usage hint comes from the schema's confirm parameter, not the description.

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

snipeit_gen_licensesidseatsGET /licenses/{id}/seatsB
Read-onlyIdempotent

GET /licenses/{id}/seats: Return all unique Seat ID's for a particular license. Generated from Snipe-IT OpenAPI operation licensesidseats.

NameRequiredDescriptionDefault
idYesThe id (not name) of the license.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds that the payload is a set of unique Seat IDs rather than full seat objects, which is genuinely useful given there is no output schema, but it says nothing about pagination, ordering, or what happens for a license with no seats.

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 functional sentence is tight and front-loaded, but the trailing 'Generated from Snipe-IT OpenAPI operation licensesidseats' is provenance boilerplate that adds no decision value.

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

Completeness4/5

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

For a simple single-parameter read endpoint with annotations and no output schema, the description covers the resource, the required identifier, and the shape of the return (unique Seat IDs). Only routing versus sibling seat endpoints is left unaddressed.

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?

There is only one parameter and schema coverage is 100%; the schema already states 'The id (not name) of the license.' The description does not add format, coercion, or error semantics beyond that, so baseline 3 applies.

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 a specific verb and resource: return all unique Seat IDs for a particular license, with the license ID as the key. It is clear on its own, but it does not distinguish itself from close siblings like snipeit_get_license_seats or snipeit_gen_licensesidseatsseat_id, so an agent must guess which seat-related endpoint it wants.

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 rather than snipeit_get_license_seats (full seat records) or the per-seat endpoints. The only framing is the HTTP path, which requires the agent to infer usage from REST conventions.

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

snipeit_gen_licensesidseatsseat_idGET /licenses/{id}/seats/{seat_id}B
Read-onlyIdempotent

GET /licenses/{id}/seats/{seat_id}: Get details for one specific unique Seat ID for a particular license. Generated from Snipe-IT OpenAPI operation licensesidseatsseat_id.

NameRequiredDescriptionDefault
idYesThe id (not name) of the license.
seat_idYesThe Unique Seat ID for this seat for this license

TDQS

B3.3/5.0
Behavior2/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. The description adds only a generated-from-OpenAPI note and does not disclose additional behavior such as authentication needs, response shape, or error conditions.

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 purpose is front-loaded in a single sentence. The trailing 'Generated from Snipe-IT OpenAPI operation...' boilerplate is unnecessary but brief, so the description remains appropriately sized.

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-only GET of one license seat, annotations and a fully documented input schema cover the essential context. The description does not explain return values, but no output schema exists and the operation is straightforward enough that this omission is minor.

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%, and the schema already explains that 'id' is the license ID (not name) and 'seat_id' is the unique seat ID for that license. The description adds no parameter meaning beyond the schema, so the baseline of 3 is appropriate.

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

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: 'Get details for one specific unique Seat ID for a particular license.' It distinguishes retrieval of a single seat from broader seat-listing operations, though it does not explicitly name the sibling tools it differs from.

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 is for fetching one seat when both a license ID and a seat ID are known. There is no explicit guidance about when to prefer this over snipeit_get_license_seats, snipeit_gen_licensesidseats, or snipeit_gen_licensesidseatsseat_id_2.

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

snipeit_gen_licensesidseatsseat_id_2PATCH /licenses/{id}/seats/{seat_id}C
DestructiveIdempotent

PATCH /licenses/{id}/seats/{seat_id}: Update user or asset a license is checked-out to (Check-in/Check-out). Generated from Snipe-IT OpenAPI operation licensesidseatsseat_id-2.

NameRequiredDescriptionDefault
idYesThe id (not name) of the license.
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
seat_idYesThe Seat ID (unique seat identifier) of the license seat that will be modified

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds only that it changes the user/asset assignment; it does not explain that omission of a field may unassign a seat, what the confirm behavior means, or what state changes occur.

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 purpose front-loaded after the path prefix. The 'Generated from Snipe-IT OpenAPI operation...' boilerplate and the repeated title add no information an agent needs.

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 destructive, nested-body mutation tool with no output schema and an undocumented nested body schema; the description should clarify the assignment semantics and the confirm gate. As written, an agent must infer all of that from schema fields alone.

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 75%, with id ('not name') and seat_id well documented, so the baseline is 3. The phrase 'user or asset' loosely maps to the undescribed body fields assigned_to and asset_id, adding marginal value, but the nested 'note' field and confirm workflow receive no explanation in the description.

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

Purpose3/5

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

The description adds a real purpose beyond the path: 'Update user or asset a license is checked-out to,' which tells the agent it mutates seat assignment. However, it opens by restating the title/path, and '(Check-in/Check-out)' is ambiguous about which direction of change occurs, with no differentiation from the sibling PUT /licenses/{id}/seats/{seat_id} or checkout_license_seat.

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 statement of when to use this PATCH versus the PUT sibling or the dedicated checkout_license_seat tool, and no prerequisites mentioned. The only hint is the parenthetical '(Check-in/Check-out)', which is not actionable guidance.

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

snipeit_gen_locationsGET /locationsC
Read-onlyIdempotent

GET /locations: List locations. Generated from Snipe-IT OpenAPI operation locations.

NameRequiredDescriptionDefault
zipNo
cityNo
nameNo
sortNoField to order by
limitNoNumber of results to return
orderNoSort order (asc or desc)
offsetNoOffset to use when retrieving results (useful in pagination)
searchNoSearch string
addressNo
countryNo
address2No

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond restating that this is a GET/list operation, and it does not explain pagination behavior, filtering expectations, or response shape.

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

Conciseness3/5

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

The description is short and front-loads the operation, but the second sentence, "Generated from Snipe-IT OpenAPI operation locations," is boilerplate that adds little operational value. It is concise but under-specified rather than information-dense.

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 11 optional parameters, no output schema, and many sibling location endpoints, the description is too thin. It does not explain how filtering, search, sorting, or pagination should be used, leaving the agent to infer behavior from parameter names 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?

There are 11 parameters and only 45% schema description coverage. Six filter parameters (zip, city, name, address, address2, country) have no descriptions anywhere, and the description adds no parameter semantics to compensate. An agent gets no help understanding how to use these filters.

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 locations." That is clear enough for an agent to understand the core operation, but it does not distinguish this tool from the many sibling location tools such as snipeit_list_locations, snipeit_gen_locations_1, or snipeit_get_location.

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 guidance on when to use this tool versus alternatives. It does not mention filtering, pagination, or why an agent would choose this generated endpoint over snipeit_list_locations or the other location-related siblings.

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

snipeit_gen_locations_1GET /locations/{id}C
Read-onlyIdempotent

GET /locations/{id}: Get location details by id. Generated from Snipe-IT OpenAPI operation locations-1.

NameRequiredDescriptionDefault
idYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds no further behavioral context, such as error behavior for unknown IDs or what subset of a location record is returned; the 'Generated from Snipe-IT OpenAPI' line is provenance, not 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?

Two short sentences with the core purpose front-loaded and no padding beyond the generator-provenance note. It is a little redundant with the tool title but efficiently sized.

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

Completeness3/5

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

There is no output schema and the description does not describe the returned location record, and it does not disambiguate the tool from its duplicate siblings. It is minimally adequate for a simple read-by-id call because the annotations carry the safety profile, but it leaves real 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 single id parameter has 0% schema description coverage. The phrase 'by id' only weakly implies it is a location identifier, and nothing says whether it is the numeric Snipe-IT location ID or some other key. With no schema text to compensate, the description should do more.

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 a specific verb and resource: 'Get location details by id'. That is clearer than the endpoint-style name alone. However, it never distinguishes this tool from the many sibling location getters (snipeit_get_location, snipeit_gen_locationsid, snipeit_gen_locations_2/_3), so an agent cannot tell which of the near-identical tools to call.

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 about when to use this tool versus the numerous other location-fetching siblings, and no prerequisites or exclusion criteria are given. The agent must infer usage from the name and path alone.

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

snipeit_gen_locations_2POST /locationsC
Destructive

POST /locations: Create a new location. Generated from Snipe-IT OpenAPI operation locations-2.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description confirms the create operation but adds no extra behavioral context such as permissions, side effects, or the confirm-write requirement.

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 short and front-loads the useful action. The second sentence about OpenAPI generation is provenance rather than invocation guidance, but overall 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?

For a destructive create endpoint with a nested body and no output schema, the description is too sparse. It omits prerequisites, required-field emphasis, side effects, and any response context beyond what annotations and the partial schema provide.

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 explain the body fields or the confirm parameter, leaving parameter meaning to the schema. With only 50% schema description coverage and a nested body object, the description does not compensate for the missing semantics.

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: "POST /locations: Create a new location." This clearly distinguishes creation from read/update/delete siblings, though it does not explicitly name an alternative tool or 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?

It implies this endpoint creates a location, but gives no when-to-use guidance, prerequisites, or comparison to alternatives such as update or raw request tools. The agent must infer all usage conditions.

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

snipeit_gen_locations_3PUT /locations/{id}C
DestructiveIdempotent

PUT /locations/{id}: Updates a location. Generated from Snipe-IT OpenAPI operation locations-3.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond 'updates': it does not explain whether the body replaces or merges fields, what permissions are needed, whether the confirm parameter is required, or what side effects occur.

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 short but includes generated boilerplate ('Generated from Snipe-IT OpenAPI operation locations-3') that adds no value for an agent. It is under-specified rather than concise: there is no front-loaded guidance beyond the endpoint path.

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 a destructive mutation with a nested body object, incomplete parameter descriptions, and no output schema, the description is completely inadequate. It omits confirmation requirements, body semantics, and any behavioral detail an agent would need to invoke this tool safely and correctly.

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%, and the description does not explain the id, body, or confirm parameters at all. The nested body schema has many undocumented fields such as parent_id, manager_id, company_id, and currency, and the description does nothing to compensate for that gap.

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

Purpose3/5

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

The description says it updates a location by id, which is a clear verb+resource, but it essentially restates the endpoint path and title rather than distinguishing this tool's scope from sibling location tools such as snipeit_gen_locationsid or snipeit_gen_locationsid_2. It is minimally understandable but vague about what kind of update it performs.

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, and no exclusions. 'Updates a location' implies a mutation but leaves the agent to infer that this is the full-update sibling to other location tools.

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

snipeit_gen_locationsidPATCH /locations/{id}C
DestructiveIdempotent

PATCH /locations/{id}: Partially updates a location. Generated from Snipe-IT OpenAPI operation locationsid.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and non-read-only, so the description's silence on safety is partly covered. However, it adds nothing beyond them: it does not say what a partial update changes, that omitted fields are preserved, that the confirm field may be required, or any auth/permission context.

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?

It is short and front-loaded, but the second sentence ('Generated from Snipe-IT OpenAPI operation locationsid') is boilerplate filler that earns no place and could have been replaced with useful 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?

For a destructive mutation with a 12-field nested body and only 33% schema coverage, the description should explain at minimum what can be modified and the confirm behavior. It supplies neither, leaving the agent to infer everything from the schema.

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%, and the description adds no parameter meaning at all. The nested body object exposes 12 updatable fields (zip, city, parent_id, manager_id, etc.) that are undocumented in both schema and description, and the confirm guard is not mentioned.

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

Purpose3/5

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

The description states a verb and resource ('partially updates a location'), which is clearer than the bare HTTP method in the title. But it is largely a restatement of the name/title and offers no differentiation from siblings like snipeit_gen_locationsid_2 or snipeit_get_location.

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 partial-update tool versus a full PUT, versus the raw request tool, or versus the other locations endpoints. No prerequisites or exclusions are given.

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

snipeit_gen_locationsid_2DELETE /locations/{id}C
DestructiveIdempotent

DELETE /locations/{id}: Deletes a location. Generated from Snipe-IT OpenAPI operation locationsid-2.

NameRequiredDescriptionDefault
idYes
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it never mentions irreversibility, whether the delete is soft or hard, cascading effects on assets assigned to the location, or the SNIPEIT_CONFIRM_WRITES gating that the schema implies.

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

Conciseness3/5

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

The first sentence is tight and front-loaded. The second sentence, 'Generated from Snipe-IT OpenAPI operation locationsid-2,' is metadata noise that occupies half the description without adding meaning for an agent.

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?

A destructive mutation with no output schema and a confirmation parameter deserves at least a note on consequences and the confirm flow. The description leaves both unaddressed, so an agent calling it correctly depends entirely on inferring behavior from annotations and the raw schema.

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 50%: `confirm` is documented in the schema, but `id` has no description. The description does not compensate at all — it never explains what the id refers to (location ID vs. any other identifier) or how the confirm string interacts with environment configuration.

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 a specific verb and resource: 'Deletes a location.' An agent can tell what the tool does. However, it does not distinguish itself from the many sibling location tools (snipeit_gen_locationsid, snipeit_gen_locations_1/2/3, snipeit_get_location, snipeit_list_locations), so the agent cannot confirm this is the delete variant of locations without reading the raw path.

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 when-to-use guidance, no prerequisites, no mention of alternatives. With a dozen-plus location-related siblings and a separate generic snipeit_raw_request, the description gives the agent nothing to route on besides the name itself.

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

snipeit_gen_maintenancesGET /maintenancesC
Read-onlyIdempotent

GET /maintenances: List asset maintenances. Generated from Snipe-IT OpenAPI operation maintenances.

NameRequiredDescriptionDefault
sortNoField to order by
limitNoNumber of results to return
orderNoSort order (asc or desc)
offsetNoOffset to use when retrieving results (useful in pagination)
searchNoSearch string
asset_idNoAsset ID of the asset you'd like to return maintenances for

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds nothing beyond that – no note on pagination defaults, what search matches, or what a maintenance record contains. The only extra sentence is provenance metadata ("Generated from Snipe-IT OpenAPI 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?

Two short sentences, front-loaded with the operation and resource. The second sentence is low-value generator provenance, but the whole thing is far from bloated.

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 read tool with fully specified params and annotations, the core is covered, but the sibling list contains five or more maintenances endpoints with indistinguishable names. Without any disambiguation, an agent cannot reliably pick this tool, which is the main missing piece.

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%, so sort, limit, order, offset, search, and asset_id are all documented in the schema itself. The description adds no clarification (e.g., which fields sort/search accept, or that asset_id scopes results to one asset), so the baseline 3 applies.

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 a specific verb and resource ("List asset maintenances"), so the agent knows it is a read of maintenance records. However, it does nothing to distinguish itself from near-identical siblings such as snipeit_list_maintenances, snipeit_gen_maintenances_1, and snipeit_gen_maintenances_copy, which all appear to hit the same resource.

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 when-to-use guidance, no mention of the four sibling maintenance tools, and no statement of prerequisites or alternatives. The agent is left to guess whether to call this one, snipeit_list_maintenances, or one of the _copy variants.

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

snipeit_gen_maintenances_1POST /maintenancesC
Destructive

POST /maintenances: Create a new maintenance. Generated from Snipe-IT OpenAPI operation maintenances-1.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds no behavioral context beyond restating that this is a POST/create operation: it does not explain what happens on creation, whether the confirm parameter is required, or what side effects occur.

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 short and front-loads the useful verb+resource phrase. However, the second sentence is boilerplate generator metadata that does not help an agent invoke the tool correctly and could be removed without loss.

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 destructive mutation with a nested required body and a special confirm parameter, but the description provides none of that operational context. Given the lack of an output schema and the presence of annotations, the description should at least clarify required body fields or the confirmation requirement, but it does not.

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 nested body contains multiple required fields (name, asset_id, supplier_id, asset_maintenance_type, start_date) with no descriptions. The description mentions none of these parameters or the confirm parameter, so it does not compensate for the partial schema documentation.

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: 'Create a new maintenance.' This is clear enough for an agent to understand the operation. However, it does not distinguish this tool from the very similar sibling names such as snipeit_create_maintenance or snipeit_gen_maintenances, and the 'Generated from Snipe-IT OpenAPI operation maintenances-1' clause adds no operational clarity.

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 when-to-use or when-not-to-use guidance, no mention of alternatives like snipeit_create_maintenance, and no prerequisites such as required permissions or the confirm=YES write-confirmation mechanism. The agent must infer all usage context from the schema and annotations.

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

snipeit_gen_maintenances_copyPUT /maintenances/{id}C
DestructiveIdempotent

PUT /maintenances/{id}: Update selected fields in an existing maintenance. Generated from Snipe-IT OpenAPI operation maintenances-copy.

NameRequiredDescriptionDefault
idYesPath parameter 'id' (not declared in the spec, synthesized by codegen)
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already flag destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is partly covered, but the description adds nothing: it omits the confirm="YES" write gate that the schema exposes, says nothing about what gets overwritten by a PUT, and its "selected fields" phrasing misleadingly suggests a partial update when the body requires name, asset_id, supplier_id, asset_maintenance_type and start_date.

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?

Two short sentences, front-loaded with the operation, so it is not bloated. The second sentence is low-value codegen provenance ("Generated from Snipe-IT OpenAPI operation maintenances-copy") that tells an agent nothing usable while the space would be better spent on the confirm gate.

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?

No output schema exists, so return values are out of scope, but the body contract is undocumented.

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%, and that coverage comes almost entirely from the synthesized id and the confirm parameter; the nine body fields (cost, notes, dates, enum-valued asset_maintenance_type) carry no descriptions anywhere. The description adds no meaning about any parameter, so the gap in the body contract is not compensated.

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

Purpose3/5

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

The description gives a concrete verb+resource ("Update selected fields in an existing maintenance") but never reconciles it with the tool name's "copy" suffix, nor does it distinguish this from the many near-identical maintenance siblings (snipeit_gen_maintenances_1, snipeit_gen_maintenances_copy_1, snipeit_gen_maintenancesid). An agent can guess it is an update call, but cannot tell which maintenance-update variant to pick.

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 statement of when to use this versus snipeit_create_maintenance, snipeit_list_maintenances, or the other gen_maintenances variants, and no prerequisites are given. The 'copy' in the name hints at a distinct intent that the description leaves entirely unexplained.

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

snipeit_gen_maintenances_copy_1PATCH /maintenances/{id}C
DestructiveIdempotent

PATCH /maintenances/{id}: Update selected fields in an existing maintenance. Generated from Snipe-IT OpenAPI operation maintenances-copy-1.

NameRequiredDescriptionDefault
idYesPath parameter 'id' (not declared in the spec, synthesized by codegen)
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true and readOnlyHint=false, so the safety profile is covered. The description adds only the mild implication of partial-update semantics via "selected fields" and says nothing about what the destructive write affects or what the confirm gate means in practice.

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?

Two sentences, front-loaded with the operation, which is good. The second sentence is codegen boilerplate that conveys no invocation value, and the whole thing is arguably too terse for a destructive nested-body mutation.

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 destructive PATCH with a nested required body, a synthesized id parameter, and a conditional confirm gate, the description provides only the HTTP verb and resource. It leaves the agent to discover required fields and write-confirmation behavior entirely from the schema.

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% and routed through a nested body object, so the description needs to compensate for the remainder. It instead names zero parameters and never mentions the required asset_maintenance_type field, the id path parameter, or the confirm write gate.

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

Purpose3/5

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

The verb+resource pair ("Update selected fields in an existing maintenance") is clear enough on its own, but it does nothing to separate this tool from the many near-identical maintenance siblings (snipeit_gen_maintenances, snipeit_gen_maintenances_1, snipeit_gen_maintenances_copy, snipeit_gen_maintenancesid). "Selected fields" is also vague about which fields are actually updatable.

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 versus the other maintenance endpoints, no prerequisites, and no note that the body requires asset_maintenance_type. The trailing "Generated from Snipe-IT OpenAPI operation maintenances-copy-1" is provenance metadata, not usage guidance.

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

snipeit_gen_maintenancesidDELETE /maintenances/{id}C
DestructiveIdempotent

DELETE /maintenances/{id}: Delete a maintenance. Generated from Snipe-IT OpenAPI operation maintenancesid.

NameRequiredDescriptionDefault
idYesMaintenance ID
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing beyond that – it never mentions irreversibility, what happens to associated records, or that SNIPEIT_CONFIRM_WRITES may demand confirm="YES"; the second sentence is pure generator boilerplate.

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 actionable clause is front-loaded and short, but the second sentence ("Generated from Snipe-IT OpenAPI operation maintenancesid") is low-value boilerplate that does not help an agent decide or invoke. Two sentences, one of which does not earn its place.

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 destructive write with no output schema and a mandatory confirmation parameter, yet the description explains none of that: not the confirm gate, not the error/404 behavior, not whether the deletion is a soft or hard delete. For a destructive 2-parameter tool the description should carry far more weight.

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%, and both parameters (id, confirm) carry their own descriptions including the exact const "YES". The description only echoes the {id} path token and adds no format, validation, or confirm-flow detail, so baseline 3 applies.

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 ("Delete a maintenance") and the path makes the identifier explicit, so an agent knows exactly what will be removed. It does not, however, distinguish this tool from the several near-identical maintenance siblings (snipeit_gen_maintenances_1, _copy, _copy_1, snipeit_list_maintenances), which forces the agent to guess.

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 statement of when to use this versus the other maintenance endpoints, no prerequisite or permission context, and no mention of the confirm parameter's role. The only usage signal is implicit in the word "Delete".

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

snipeit_gen_manufacturersGET /manufacturersC
Read-onlyIdempotent

GET /manufacturers. Generated from Snipe-IT OpenAPI operation manufacturers.

NameRequiredDescriptionDefault
urlNo
nameNoName of the manufacturer
sortNoColumn to sort by (not declared in the spec for this operation, added by codegen)
limitNoPage size (not declared in the spec for this operation, added by codegen)
orderNoSort order (not declared in the spec for this operation, added by codegen)
offsetNoRows to skip (not declared in the spec for this operation, added by codegen)
searchNoText search (not declared in the spec for this operation, added by codegen)
support_urlNoSupport URL
support_emailNoSupport email
support_phoneNoSupport phone number

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no note on pagination behavior, filter semantics, or what the response contains for a list endpoint.

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?

It is very short, so there is no padding, but the second sentence ("Generated from Snipe-IT OpenAPI operation manufacturers") conveys provenance rather than actionable information. Brevity here reflects under-specification rather than disciplined editing.

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 10-parameter list endpoint with no output schema, the description should at minimum explain the returned collection and pagination/filtering behavior. With only a repeated endpoint path, an agent lacks what it needs to call this confidently versus its near-duplicate siblings.

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 90%, so the ten parameters are largely self-documenting and the baseline of 3 applies. The description contributes zero additional meaning — it does not clarify the distinction between 'name' and 'search', or how sort/order/limit/offset interact.

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 restates the title verbatim ("GET /manufacturers") and adds only the codegen provenance note. An agent can infer it lists manufacturers, but nothing distinguishes it from sibling snipeit_gen_manufacturers_1, which appears to be the same operation, or from manufacturersid variants.

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

Usage Guidelines1/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, no prerequisites, and no mention of alternatives among the many manufacturer/model siblings. The agent is left to guess entirely from the endpoint path.

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

snipeit_gen_manufacturers_1POST /manufacturersC
Destructive

POST /manufacturers: Create a manufacturer. Generated from Snipe-IT OpenAPI operation manufacturers-1.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already carry the important behavioral profile (destructiveHint=true, idempotentHint=false, openWorldHint=true), and the description adds nothing to it — no note on what the confirmation gate means, no side effects of creation, no required permission. The single sentence 'Create a manufacturer' merely restates the endpoint.

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?

Very short and front-loaded, but half the text is redundant boilerplate ('POST /manufacturers' repeats the title, and 'Generated from Snipe-IT OpenAPI operation manufacturers-1' is noise). No wasted length, but also no earned 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?

For a destructive, non-idempotent creation endpoint with no output schema, the description should say at minimum what is created (required name field), what the confirmation gate implies, and what a successful call returns gives the new ID. None of that is present.

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 mentions no parameters at all. It does not tell the agent that body.name is the required field or that confirm must be the exact string "YES" when SNIPEIT_CONFIRM_WRITES is enabled, leaving the description to add zero meaning 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?

States a specific verb and resource: 'Create a manufacturer'. However, it offers no differentiation from sibling manufacturer endpoints (snipeit_gen_manufacturers, snipeit_gen_manufacturersid, snipeit_gen_manufacturersid_1/2/3), which are indistinguishable by name alone.

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 indication of when to use this versus snipeit_raw_request or the other manufacturer endpoints, and no prerequisites mentioned. The agent must infer that this is the write path for creating rather than reading or updating manufacturers.

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

snipeit_gen_manufacturersidPATCH /manufacturers/{id}C
DestructiveIdempotent

PATCH /manufacturers/{id}: Partially update a Manufacturer. Generated from Snipe-IT OpenAPI operation manufacturersid.

NameRequiredDescriptionDefault
idYesManufacturer ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, and openWorldHint=true. The description adds only 'Partially update,' but does not mention the confirm='YES' write guard, permission requirements, what data may be affected, or how partial updates handle omitted fields. It does not contradict the annotations, but it adds little beyond them.

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

Conciseness3/5

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

The definition is short and front-loads the endpoint and operation. However, the second sentence, 'Generated from Snipe-IT OpenAPI operation manufacturersid,' is boilerplate that does not help an agent invoke the tool correctly.

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 destructive mutation with a nested body and no output schema. The annotations cover the safety profile, but the description leaves important context unstated: the required confirm token, what partial update means for omitted fields, and what the body's manufacturer fields are. For a write operation with nested parameters, it is under-specified.

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%, with id and confirm documented in the schema, but the body object's fields are not described in either place. The description contributes no parameter-level meaning, so it does not compensate for the remaining gap around the nested body payload.

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: 'PATCH /manufacturers/{id}: Partially update a Manufacturer.' That is clear enough for an agent to understand the operation. However, it does not distinguish this tool from the many similarly named manufacturer siblings such as snipeit_gen_manufacturersid_1, _2, and _3, 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?

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The only context is the generated OpenAPI sentence, which does not help an agent choose between this and the other manufacturer-related tools.

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

snipeit_gen_manufacturersid_1GET /manufacturers/{id}C
Read-onlyIdempotent

GET /manufacturers/{id}: View a manufacturer. Generated from Snipe-IT OpenAPI operation manufacturersid-1.

NameRequiredDescriptionDefault
idYesManufacturer ID

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety and idempotency profile is fully covered by structured data. The description adds only provenance ("Generated from Snipe-IT OpenAPI operation") and no behavioral context such as 404 handling for a missing ID or what the response contains. What it adds beyond annotations is essentially zero.

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 operation and purpose front-loaded. The trailing "Generated from Snipe-IT OpenAPI operation manufacturersid-1" is metadata that doesn't help an agent select or invoke the tool, but it costs little.

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 single-parameter read tool with complete annotations and full schema coverage, the essentials are covered by structured fields. Still, the description says nothing about the returned manufacturer record or error behavior, leaving gaps that a richer description would fill since no output schema exists.

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?

One required parameter with 100% schema description coverage ("Manufacturer ID"), so the schema already documents it fully. Per the high-coverage baseline, a 3 is appropriate since the description neither needs to compensate nor adds any further semantics.

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 a specific verb and resource ("View a manufacturer") tied to GET /manufacturers/{id}, so the agent can tell it retrieves a single manufacturer. It does not differentiate from the sibling tools snipeit_gen_manufacturersid, _2, and _3, which share the same path and are likely other HTTP methods on the same resource.

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 word "View" implies a read, but there is no explicit when-to-use guidance, no mention of when to prefer snipeit_gen_manufacturers (list) over this single-record fetch, and no note about the sibling variants. The agent must infer the selection criteria.

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

snipeit_gen_manufacturersid_2DELETE /manufacturers/{id}C
DestructiveIdempotent

DELETE /manufacturers/{id}: Delete a manufacturer. Generated from Snipe-IT OpenAPI operation manufacturersid-2.

NameRequiredDescriptionDefault
idYesManufacturer ID
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so safety profile is covered structurally. The description adds nothing beyond that — it doesn't mention consequences for referencing records, irreversibility, or the SNIPEIT_CONFIRM_WRITES gating beyond what the schema already spells out.

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 first sentence is efficient and front-loaded, but the second sentence ('Generated from Snipe-IT OpenAPI operation manufacturersid-2') is provenance noise that does not help an agent invoke the tool.

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 destructive delete operation with no output schema, the description should at minimum note failure conditions (e.g., manufacturer in use) or irreversibility. Annotations cover the safety hints, but the description leaves behavioral gaps an agent would need to know before invoking.

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%, and both the 'id' and 'confirm' parameters are fully documented in the schema, so the description does not need to compensate. It adds no additional semantic value beyond the schema, matching the baseline 3 for fully-documented 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 states a specific verb and resource ('Delete a manufacturer') that maps directly to DELETE /manufacturers/{id}, so the action is unambiguous. However, it offers no differentiation from the numerous sibling manufacturer operations (snipeit_gen_manufacturersid, _1, _3), so an agent must open schemas to distinguish them.

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 delete versus alternatives, no prerequisites stated (e.g., whether the manufacturer must have no associated assets/models), and no mention of the confirm parameter's role in practice. The agent is left to infer usage entirely.

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

snipeit_gen_manufacturersid_3PUT /manufacturers/{id}C
DestructiveIdempotent

PUT /manufacturers/{id}: Update a Manufacturer. Generated from Snipe-IT OpenAPI operation manufacturersid-3.

NameRequiredDescriptionDefault
idYesManufacturer ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, and openWorldHint=true, so the safety profile is largely covered. The description adds no behavioral detail beyond restating the operation—nothing about partial vs full replacement, confirmation requirements, permissions, or effects on existing data.

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 short and front-loads the endpoint and purpose. However, the provenance sentence ('Generated from Snipe-IT OpenAPI operation manufacturersid-3') adds no actionable information for an agent and the whole description is arguably under-specified rather than genuinely 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 destructive, nested-body mutation tool with no output schema and only 67% schema description coverage, the description is too thin. It omits required body semantics, confirmation behavior, and what the update actually returns or affects.

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%, with id and confirm documented in the schema but the body object and its required name field carrying no descriptive context. The description contributes no additional parameter semantics, so it does not compensate for the remaining 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 names the operation and resource explicitly (PUT /manufacturers/{id}: Update a Manufacturer), so the core purpose is clear. It does not distinguish this tool from the several sibling manufacturer update variants (e.g., snipeit_gen_manufacturersid_1/_2, snipeit_gen_manufacturersid), so it falls short of full sibling differentiation.

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

Usage Guidelines2/5

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

It states only that the tool updates a manufacturer and gives no when-to-use guidance, prerequisites, or comparison to alternative manufacturer-related tools. The surrounding sibling list shows many near-duplicate manufacturer operations, making the lack of routing guidance especially costly.

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

snipeit_gen_modelsGET /modelsC
Read-onlyIdempotent

GET /models: Returns a list of models. Generated from Snipe-IT OpenAPI operation models.

NameRequiredDescriptionDefault
nameNoName of the asset model
sortNoField to order by
limitNoNumber of records to return
notesNoModel notes
orderNoSort order (asc or desc)
offsetNoOffset to use when retrieving results (useful in pagination)
searchNoSearch string
category_idNoFilter by category ID
requestableNoWhether or not the model is requestable
model_numberNoModel number
depreciation_idNoFilter by depreciation ID

TDQS

C2.9/5.0
Behavior2/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. The description adds no behavioral context beyond restating the HTTP method and resource, such as pagination behavior or the shape of the returned list.

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 short and front-loaded with the operation, but the second sentence ('Generated from Snipe-IT OpenAPI operation models') is provenance boilerplate that does not help an agent call the tool correctly.

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 11 optional filter parameters, no output schema, and annotations covering safety, the description is minimally complete. It does not mention pagination or return structure, though the schema documents the parameters comprehensively.

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%, so all 11 parameters are already documented in the schema. The description adds no additional meaning or usage hints for any parameter, which is acceptable at the baseline 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.

Purpose4/5

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

The description states a clear verb and resource: 'Returns a list of models.' Unlike a tautology, it tells the agent what the endpoint does. However, it does not differentiate this list tool from the many sibling model endpoints such as snipeit_gen_modelsid or snipeit_gen_models_1.

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 filtering, pagination, or that it is the list-all endpoint for models, leaving the agent to infer usage from the schema alone.

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

snipeit_gen_models_1POST /modelsC
Destructive

POST /models: Create a model. Generated from Snipe-IT OpenAPI operation models-1.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

The annotations already disclose that this is a destructive, non-idempotent, open-world write operation. The description only repeats that it creates a model and adds no further behavioral context such as required permissions, confirmation semantics, or what happens on failure.

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 short and front-loads the action, but the trailing provenance note ('Generated from Snipe-IT OpenAPI operation models-1') adds little operational value. Its brevity leaves important gaps rather than being optimally 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 destructive write tool with a nested body and no output schema, the description is too thin. It does not explain the required body fields, the confirm gate, or any usage context needed to safely invoke the tool.

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 provides no information about the body fields or the confirm parameter. It does not compensate for undocumented nested properties like name, category_id, eol, fieldset_id, or manufacturer_id.

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 and resource: 'Create a model' for POST /models. This distinguishes it from read/update/delete model operations in the sibling list, though it does not explicitly name or differentiate among the many gen_models variants.

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 snipeit_gen_modelsid_1 for updates or snipeit_raw_request. No prerequisites, confirmation requirements, or exclusions are mentioned.

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

snipeit_gen_models_files_listGET /models/{id}/filesB
Read-onlyIdempotent

GET /models/{id}/files: Retrieve a model's files by model ID. Generated from Snipe-IT OpenAPI operation models-files-list.

NameRequiredDescriptionDefault
idYesModel ID

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds nothing beyond that: no note on whether the file list is paginated, whether an empty list is returned for models without files, or how missing/invalid model IDs are handled.

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 resource and scoping key front-loaded. The leading 'GET /models/{id}/files' duplicates the title and the 'Generated from Snipe-IT OpenAPI operation' clause is low-value boilerplate, but neither bloats the definition.

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 single-parameter read tool with full annotation coverage and a documented id parameter, an agent has what it needs to call this correctly. No output schema exists, so a brief note on the shape of the returned file list would be the only meaningful addition.

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?

There is only one parameter and schema description coverage is 100%, so the schema already documents 'id' as the Model ID. The description restates 'by model ID' without adding format, range, or error behavior, which is the expected baseline when the schema does the work.

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

Purpose4/5

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

States a specific verb and resource: 'Retrieve a model's files by model ID', which is unambiguous and tells an agent exactly what comes back (files belonging to a model). It does not name or distinguish itself from close siblings such as snipeit_gen_modelsidfilesfile_id (single file) or snipeit_gen_hardware_list_files, 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 Guidelines3/5

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

Usage is only implied by the phrasing 'by model ID' – an agent can infer this is the read path when it has a model ID and wants its attachments. There is no explicit when-to-use, no prerequisites, and no mention of the single-file sibling as the alternative for fetching one attachment.

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

snipeit_gen_modelsidGET /models/{id}C
Read-onlyIdempotent

GET /models/{id}: Retrieve the specific details of a model by id. Generated from Snipe-IT OpenAPI operation modelsid.

NameRequiredDescriptionDefault
idYesmodel id

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, covering the safety profile. The description adds nothing behavioral beyond that — no note on not-found handling, permissions, or what a successful lookup returns — and the only extra sentence is generator provenance boilerplate.

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 endpoint and purpose are front-loaded in one tight sentence. The trailing "Generated from Snipe-IT OpenAPI operation modelsid" is metadata that does not help invocation but is short and harmless.

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 read-only single-parameter fetch this is minimally sufficient, and annotations carry the safety semantics. With no output schema, an agent still has no idea what a model record contains or how errors surface, which the description could have hinted at.

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% and the single required `id` parameter is documented in the schema as "model id". The description's "by id" restates the schema rather than adding format, range, or lookup-failure semantics, so baseline 3 applies.

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 a specific verb and resource ("Retrieve the specific details of a model by id"), so an agent knows it is a single-record fetch. It does not distinguish itself from the many near-identical siblings such as snipeit_gen_modelsid_1/_2/_3, whose purpose relative to this one is left ambiguous.

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 versus snipeit_list_models (snipeit_gen_models) or the duplicate /models/{id} variants. An agent is left to infer that lookup-by-id is the selection criterion.

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

snipeit_gen_modelsid_1PUT /models/{id}C
DestructiveIdempotent

PUT /models/{id}: Update a model. Generated from Snipe-IT OpenAPI operation modelsid-1.

NameRequiredDescriptionDefault
idYesmodel id
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — it does not explain what gets overwritten, whether omitted fields are cleared, or that a confirm='YES' string is required when SNIPEIT_CONFIRM_WRITES=true.

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 short and front-loaded with the operation, but the second sentence ('Generated from Snipe-IT OpenAPI operation modelsid-1') is metadata noise that does not help invocation. It is concise without being informative.

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 destructive, nested-body mutation with no output schema, the description is far too thin — it omits required fields, confirm-write semantics, permission expectations, and return behavior. It does not give the agent enough to call the tool 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?

With 67% schema description coverage and a nested body object whose fields (eol, notes, requestable, model_number, etc.) are undocumented, the description provides no compensating meaning. It does not clarify the required body fields (name, category_id) or the semantics of the confirm parameter.

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

Purpose3/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 ('Update a model') plus the endpoint, so the basic purpose is clear. However, it provides no differentiation from the many sibling model operations (snipeit_gen_modelsid, snipeit_gen_modelsid_2, etc.), leaving the agent unable to tell which model mutation this one is for.

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 snipeit_gen_modelsid or snipeit_gen_modelsid_2, nor any mention of prerequisites or the confirm-write behavior. The agent is left to infer usage entirely from the endpoint name.

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

snipeit_gen_modelsid_2PATCH /models/{id}C
DestructiveIdempotent

PATCH /models/{id}: Update a model. Generated from Snipe-IT OpenAPI operation modelsid-2.

NameRequiredDescriptionDefault
idYesmodel id
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered structurally. The description adds nothing beyond restating the title: it does not explain PATCH partial-update semantics, what gets overwritten, or that the confirm parameter is required when SNIPEIT_CONFIRM_WRITES=true. With annotations present the bar is lower, but zero added context merits a 2.

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 first sentence is front-loaded and efficient. The second sentence ("Generated from Snipe-IT OpenAPI operation modelsid-2") is metadata noise that consumes space without helping an agent decide or invoke.

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 destructive, open-world PATCH tool with a nested body object and a conditional confirm parameter, the description is too thin. It does not explain the confirm gate, the partial-update behavior, or which body fields are meaningful, leaving significant gaps even though annotations cover the basic write/destructive profile.

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 documents id and confirm but leaves the seven body properties (name, notes, category_id, fieldset_id, requestable, model_number, depreciation_id, manufacturer_id) undescribed. At 67% top-level coverage, the description could have clarified the body object or confirm semantics but instead provides no parameter information at all.

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 ("Update a model") and the title confirms PATCH semantics, so an agent knows this mutates an existing model record. However, it does nothing to distinguish this from the many sibling model-id tools (modelsid, modelsid_1, modelsid_3), which likely cover GET/DELETE or other operations on the same resource.

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 other model-related siblings, no prerequisites, and no exclusions. The agent is left to infer that this is the PATCH path rather than a GET or DELETE from the title alone.

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

snipeit_gen_modelsid_3DELETE /models/{id}C
DestructiveIdempotent

DELETE /models/{id}: Delete a model. Generated from Snipe-IT OpenAPI operation modelsid-3.

NameRequiredDescriptionDefault
idYesmodel id
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond that — it doesn't say whether this is a soft delete, what happens to models still assigned to assets, or what a successful response looks like.

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

Conciseness4/5

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

Two short sentences, front-loaded with the verb and resource. The second sentence is generator boilerplate but does explain the opaque operation slug in the tool name, so it is not pure waste.

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 destructive single-entity delete with no output schema, the definition is minimum viable: annotations carry the safety profile and the schema carries the parameters. It still omits the consequences of deletion and why one sibling (path id variant) should be preferred over another.

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 'id' and the conditional 'confirm' parameter (required when SNIPEIT_CONFIRM_WRITES=true) are fully documented in the schema. The description contributes no additional parameter meaning, so the baseline 3 applies.

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 a specific verb and resource: 'DELETE /models/{id}: Delete a model.' An agent knows exactly what it does. However, it offers no differentiation from the similarly named siblings (snipeit_gen_modelsid, _1, _2), which are presumably GET/PUT/PATCH on the same path — the agent must inspect those separately.

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 versus snipeit_gen_modelsid_1/_2 or the raw request tool, and no preconditions such as checking for assigned assets before deleting a model. The only signal is the destructive annotation, not the text.

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

snipeit_gen_modelsidfilesPOST /models/{id}/filesA
Destructive

POST /models/{id}/files: Upload one or more files to a model. Generated from Snipe-IT OpenAPI operation modelsidfiles. File uploads do not work through this tool: Snipe-IT expects multipart/form-data and this tool sends JSON (the vendored spec declares JSON). Upload files in the Snipe-IT web UI.

NameRequiredDescriptionDefault
idYesID of the model you'd like to upload files to to
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true, readOnlyHint=false, openWorldHint=true), it discloses the decisive behavioral fact that the server expects multipart/form-data while this tool sends JSON because the vendored spec declares JSON, so the call will fail. That is exactly the kind of runtime trait annotations cannot express.

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

Conciseness4/5

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

Four short sentences, with the capability and the failure warning front-loaded. The leading "POST /models/{id}/files:" restates the title, a minor redundancy, but no sentence is filler.

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

Completeness5/5

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

For a mutate tool with annotations covering safety and a schema covering required fields, the description supplies the missing pieces an agent needs: the tool is non-functional for its stated purpose and where to go instead. No output schema exists, but the outcome (failure) is made explicit.

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%; id and confirm are documented in the schema, but the nested body requires file and the optional notes carry no descriptions anywhere. The description only loosely hints at the file payload ("Upload one or more files") and says nothing about notes or the JSON-vs-multipart mismatch per parameter, so it adds little 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?

States a specific verb and resource (upload one or more files to a model) and names the endpoint path. It is separable from siblings like snipeit_gen_modelsidfilesfile_id or snipeit_gen_hardware_upload_files by the model-scoped resource, though it never explicitly contrasts them.

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

Usage Guidelines5/5

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

It explicitly tells the agent not to use this tool and redirects to a concrete alternative: upload files in the Snipe-IT web UI. That is a clear when-not-to-use plus a substitute, which is the strongest form of routing guidance.

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

snipeit_gen_modelsidfilesfile_idDELETE /models/{id}/files/{file_id}C
DestructiveIdempotent

DELETE /models/{id}/files/{file_id}: /models/:id/files/:file_id. Generated from Snipe-IT OpenAPI operation modelsidfilesfile_id.

NameRequiredDescriptionDefault
idYes
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
file_idYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered elsewhere. The description adds nothing: no statement about irreversible deletion, permissions, or the SNIPEIT_CONFIRM_WRITES gate mentioned only in the schema.

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

Conciseness2/5

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

The text is short but nearly all of it is redundant: the route is repeated twice and the third clause is a generation artifact. Front-loading is absent because there is no substantive content to front-load.

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 destructive, open-world mutation with no output schema and two undocumented required parameters, the description should at minimum explain what is deleted and that it is permanent. None of that is present, leaving a real gap for an agent deciding whether to call it.

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% and the two required integer parameters (id, file_id) have no descriptions anywhere. The description does not compensate at all — it does not say that id identifies the asset model and file_id the attached file.

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

Purpose3/5

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

The description exposes the HTTP verb DELETE and the route /models/{id}/files/{file_id}, so the resource and action are inferable, but it never explains what a 'model file' is or what entity is being removed. It distinguishes itself from siblings only by the raw route string, not by any stated intent.

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 versus alternatives such as snipeit_gen_hardware_files_delete or snipeit_gen_modelsidfiles. The DELETE verb implies removal, but no context, preconditions, or exclusions are given.

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

snipeit_gen_post_auditidPOST /hardware/{id}/auditD
Destructive

POST /hardware/{id}/audit. Generated from Snipe-IT OpenAPI operation post_audit{id}.

NameRequiredDescriptionDefault
idYes
noteNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
location_idNo
update_locationNoOptionally update the assets location through the audit.

TDQS

D1.8/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, readOnlyHint=false, openWorldHint=true, so a mutation is signaled structurally. The description adds nothing on top of that: no mention of what the audit records, what irreversible state it changes, or the confirm requirement. It does not contradict annotations, but it contributes zero 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.

Conciseness2/5

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

It is short, but the second sentence ("Generated from Snipe-IT OpenAPI operation post_audit{id}") carries no actionable information and merely repeats the operation id. Brevity here reflects under-specification rather than efficient structure.

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?

A destructive, non-idempotent write with five parameters, 40% schema coverage, no output schema, and a mandatory confirm gate — yet the definition explains none of it. The agent has no basis for calling this correctly or knowing how it differs from snipeit_audit_hardware.

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 40% (note, id, and location_id are undocumented) and the description contributes no parameter meaning whatsoever. It does not explain note, location_id, or when update_location applies, so 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.

Purpose2/5

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

The description is just the HTTP route restated: "POST /hardware/{id}/audit. Generated from Snipe-IT OpenAPI operation post_audit{id}." It names a resource and an opaque operation id but never says in plain terms what the tool does (record an audit for an asset, presumably). That is tautology against the title, not a purpose statement.

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 when-to-use guidance, no prerequisites (e.g., audit permission, SNIPEIT_CONFIRM_WRITES), and no routing to alternatives. In particular it never distinguishes itself from the sibling snipeit_audit_hardware, which appears to do the same thing.

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

snipeit_gen_put_licensesidseatsseat_idPUT /licenses/{id}/seats/{seat_id}C
DestructiveIdempotent

PUT /licenses/{id}/seats/{seat_id}: Update user or asset a license is checked-out to (Check-in/Check-out). Generated from Snipe-IT OpenAPI operation put_licenses{id}seats{seat_id}.

NameRequiredDescriptionDefault
idYesThe id (not name) of the license.
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.
seat_idYesThe Seat ID (unique seat identifier) of the license seat that will be modified

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is known. The description adds only the vague hint that this PUT can act as a check-in or check-out; it does not say that reassigning a seat displaces the current holder, what a null/omitted assigned_to does, or that the write may require the confirm token gating mentioned in the schema.

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

Conciseness3/5

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

The front-loaded 'PUT /licenses/{id}/seats/{seat_id}' merely restates the title, and the closing 'Generated from Snipe-IT OpenAPI operation...' is boilerplate that earns no space. The one substantive clause about updating the checked-out user or asset is buried between them.

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 destructive, nested-body write with no output schema, and the description leaves key questions unanswered: what happens to the previous assignee, how to perform a pure check-in, and what the response looks like. For a mutation of this complexity the text is too thin to call it safely.

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 75%: id, seat_id and confirm all carry descriptions, so the baseline is 3. The description's phrase 'user or asset' loosely maps to the undocumented body fields assigned_to and asset_id, adding a little meaning, but it does not explain the nested body's semantics or which combination of fields constitutes a check-in.

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

Purpose3/5

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

The description names a verb (Update) and a resource (the user or asset a license seat is checked out to), and the parenthetical 'Check-in/Check-out' clarifies the domain. However, it never distinguishes this operation from overlapping siblings such as snipeit_checkout_license_seat, snipeit_get_license_seats, or snipeit_gen_licensesidseatsseat_id_2, so an agent cannot tell from the text which one to pick.

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 the dedicated checkout/check-in seat endpoints, nor any preconditions (e.g. seat must already exist, whether an empty body means check-in). Usage is only implied by the parenthetical remark.

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

snipeit_gen_reportsactivityGET /reports/activityD
Read-onlyIdempotent

GET /reports/activity. Generated from Snipe-IT OpenAPI operation reportsactivity.

NameRequiredDescriptionDefault
sortNoWhat column the results should be sorted by (defaults to created_at date if no value is given)
limitNoSpecify the number of results you wish to return. Defaults to 50, but we have it set to 2 by default so the API explorer doesn't scroll forever.
orderNoAscending or descending order (defaults to desc if no value is given)
offsetNoThe offset from the start of results to use in order to page through the result set
searchNoString to search on
item_idNoThe ID of the item you're querying against. Required if passing item_type
item_typeNoThe type of item you're searching against. `App\Models\Asset`, etc. Required when passing item_id.
target_idNoThe ID of the target you're querying against. Required if passing target_type
action_typeNoThe action type you'e querying against. Example values here are: "add seats", "checkin from", "checkout", "update"
target_typeNoThe type of target (entity something is checked out to) you're searching against. `App\Models\User`, etc. Required when passing target_id.

TDQS

D1.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered externally. The description adds no behavioral context such as pagination defaults, filtering semantics, or what the activity report returns.

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 short but under-specified rather than concise. The second sentence about generation adds no decision-relevant value and displaces information an agent actually needs.

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 ten-parameter reporting endpoint with no output schema, the description is completely inadequate. It omits purpose, return behavior, and guidance on the rich filtering options exposed in the schema.

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%, so the schema fully documents the ten parameters. The description contributes no additional parameter meaning beyond the schema, which is acceptable but not helpful.

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 only restates the tool path ('GET /reports/activity') and notes it was generated from an OpenAPI operation. It does not explain what an activity report contains or how it differs from sibling report and list tools.

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

Usage Guidelines1/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, when not to use it, or which sibling tools cover related reporting needs. The agent is left to infer everything from the name.

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

snipeit_gen_statuslabelsGET /statuslabelsC
Read-onlyIdempotent

GET /statuslabels: Retrieve a list of status labels. Generated from Snipe-IT OpenAPI operation statuslabels.

NameRequiredDescriptionDefault
nameNo
sortNoField to order by
limitNoNumber of records to return
orderNoSort order (asc or desc)
offsetNoOffset to use when retrieving results (useful in pagination)
searchNoString to search on
status_typeNo

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is fully covered. The description adds nothing beyond that: no mention of pagination behavior despite offset/limit parameters, no note on filtering semantics, and no indication of what the payload contains.

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?

It is short and front-loaded, but the second sentence ("Generated from Snipe-IT OpenAPI operation statuslabels") restates the tool name and endpoint and earns no place. The core sentence is efficient, but the description is under-specified rather than genuinely 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?

A 7-parameter list endpoint with no output schema and several near-duplicate siblings needs more: filtering behavior, pagination defaults, and response shape are all unstated. With no output schema, the description should at least sketch what a status label record contains, and 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?

Schema description coverage is 71%, and the schema already documents sort, order, limit, offset, and search, while status_type carries an enum. The description contributes no additional meaning for any parameter, so the baseline of 3 is appropriate for a schema that does most of the work.

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

Purpose3/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 ("Retrieve a list of status labels"), so the basic purpose is clear. However, the sibling list contains near-identical tools (snipeit_list_statuslabels, snipeit_gen_statuslabels_1) and the description gives no basis for choosing among them, nor does it clarify the relationship to it.

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 when-to-use guidance, no prerequisites, and no mention of alternatives such as snipeit_list_statuslabels or snipeit_get_statuslabel_assets for deeper lookups. The agent must infer usage purely from the name and path.

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

snipeit_gen_statuslabels_1POST /statuslabelsC
Destructive

POST /statuslabels: Create a new status label. Generated from Snipe-IT OpenAPI operation statuslabels-1.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false and openWorldHint=true; the description merely restates 'create' without explaining what the destructive hint means here, whether duplicates are rejected, or what permissions are needed. It also omits the write-confirmation flow, which is a behavioral detail that would materially change how an agent calls it.

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?

It is short and front-loads the action, but the trailing 'Generated from Snipe-IT OpenAPI operation statuslabels-1' is provenance noise that consumes space without helping the 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?

A mutation tool with no output schema and a partially documented nested body needs more: the confirm gate and the semantics of the type enum/optional flags are not explained anywhere the agent can easily see. With annotations covering the safety profile, this is a real but moderate gap.

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 50% and the description says nothing about parameters. The nested body object carries six properties (name, type enum, color, notes, show_in_nav, default_label) with only 'confirm' documented in the schema, so the description should compensate for the undocumented fields but adds zero semantics.

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 ('Create a new status label') and the HTTP route, which is enough to distinguish it from the sibling list/get/update statuslabel tools. It doesn't explicitly name those siblings, but the create 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 create a status label versus using an existing one, no prerequisites, and no mention of the confirm='YES' gate that the schema requires when SNIPEIT_CONFIRM_WRITES=true. The agent is left to infer all invocation context.

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

snipeit_gen_statuslabelsidGET /statuslabels/{id}C
Read-onlyIdempotent

GET /statuslabels/{id}: View a status label. Generated from Snipe-IT OpenAPI operation statuslabelsid.

NameRequiredDescriptionDefault
idYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is fully covered structurally. The description adds nothing beyond that – it does not mention 404 handling for unknown ids, auth requirements, or what a status label record contains, making it a restatement of the title.

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 operation front-loaded, easy to parse. The trailing 'Generated from Snipe-IT OpenAPI operation statuslabelsid' is provenance noise that consumes space without helping the caller.

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 plain GET with no output schema, the description should hint at the returned record's fields (name, type, color, defaults) and error behavior. It provides none of that, leaving an agent unable to anticipate the response payload.

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 0% for the single integer id parameter, so the description must compensate. The path template '{id}' plus 'View a status label' signals that id is a status label identifier, which is a marginal gain, but it never clarifies type scope, valid ranges, or what an id refers to.

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 a specific verb ('View') and resource ('a status label') resolved by path id, so the agent can tell it from list-style siblings like snipeit_list_statuslabels. It does not, however, distinguish itself from the many near-duplicate gen_statuslabelsid variants (snipeit_gen_statuslabelsid_1/_2/_3) or from snipeit_get_statuslabel_assets.

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 statement of when to use this tool versus alternatives, no prerequisites, and no exclusion of the sibling endpoint that returns a status label's assets. The only cue is the implied 'single record by id' shape of the path.

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

snipeit_gen_statuslabelsid_1DELETE /statuslabels/{id}C
DestructiveIdempotent

DELETE /statuslabels/{id}: Delete a status label. Generated from Snipe-IT OpenAPI operation statuslabelsid-1.

NameRequiredDescriptionDefault
idYes
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered structurally. The description adds nothing beyond them: no word on whether deletion is permanent, what happens to assets currently assigned that status label, whether a confirmation flow is enforced, or whether a failure is returned for in-use labels.

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?

Two sentences, with the actionable statement first and no padding. However, the second sentence ("Generated from Snipe-IT OpenAPI operation statuslabelsid-1") is boilerplate that conveys no information about behavior and could have been replaced with actual usage context.

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 destructive, open-world mutation with a conditional confirmation parameter and no output schema, yet the description never covers consequences, referential impact on assets, or the confirm requirement. For a delete operation the description should carry far more behavioral weight than a one-line restatement of the route.

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 50% and the description contributes nothing to the parameters. Crucially it never mentions the `confirm` parameter or the SNIPEIT_CONFIRM_WRITES gate — that context lives entirely in the schema, so an agent skimming the description would not anticipate the extra required string when write confirmation is enabled.

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 ("Delete a status label") and labels the endpoint path, so the agent knows exactly what it does. It does not distinguish itself from the many other statuslabel endpoints (list_statuslabels, get_statuslabel_assets, gen_statuslabelsid variants), but the verb 'delete' is a strong differentiator by itself.

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 versus alternatives such as snipeit_gen_statuslabelsid_1/_2/_3 or snipeit_raw_request, and no mention of prerequisites. The only routing signal is the HTTP verb in the title.

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

snipeit_gen_statuslabelsid_2PUT /statuslabels/{id}C
DestructiveIdempotent

PUT /statuslabels/{id}: Updates a status label. Generated from Snipe-IT OpenAPI operation statuslabelsid-2.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say which fields are overwritten, whether omitted fields are cleared, or that a confirm token may be required. No contradiction, but no added value either.

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?

It is short and front-loaded, which is good, but the trailing 'Generated from Snipe-IT OpenAPI operation statuslabelsid-2' sentence conveys nothing actionable and consumes half the text.

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 destructive, nested-body mutation with no output schema and 33% parameter coverage, so the description carries a heavy burden and does not meet it. It says nothing about overwrite semantics, the confirm requirement, or response behavior.

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%, and the description compensates for none of it. The nested body (name, type enum, color, notes, show_in_nav, default_label) is undocumented in both schema and description, so the agent gets no meaning for the update payload or how partial updates are treated.

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

Purpose3/5

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

The description does state a verb and resource ('Updates a status label'), which is more than the raw path in the title. However, it offers no differentiation from the many other statuslabel siblings (gen_statuslabelsid, _1, _3, idassetlist, list_statuslabels), and the second sentence is pure generator boilerplate. It is barely more informative than the title itself.

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 other status-label endpoints, no prerequisites, and no mention of the confirm-write flow. The agent must infer everything from the path.

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

snipeit_gen_statuslabelsid_3PATCH /statuslabels/{id}C
DestructiveIdempotent

PATCH /statuslabels/{id}: Updates selected fields in a status label. Generated from Snipe-IT OpenAPI operation statuslabelsid-3.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered structurally. The description adds only the vague 'selected fields' phrasing; it never says that omitted fields are left untouched, what the destructive risk is, or that a confirmation string may be required — nothing beyond what annotations and schema already state.

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 first sentence is front-loaded and efficient. The second sentence ('Generated from Snipe-IT OpenAPI operation statuslabelsid-3') is generator boilerplate that tells an agent nothing actionable, so the description is not entirely earning its space.

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 destructive mutation with a nested six-field body, a conditional confirm requirement, and no output schema, the description leaves out the body field meanings, the confirm gate, and any statement of effect. Given the tool's complexity and the sibling-name ambiguity, an agent cannot call it confidently from this text alone.

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% and the body is a nested object with six undocumented properties (name, type, color, notes, show_in_nav, default_label). The description does not name or explain any parameter, so it fails to compensate for the coverage gap. The only schema-side help is the confirm field's own 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 names a clear verb ('Updates') and resource ('a status label', with the /statuslabels/{id} path), so an agent knows it is a partial-update mutation. It gives no differentiation from the near-identical siblings (snipeit_gen_statuslabelsid, _1, _2, plus the PUT/GET variants), which matters here given how many similarly named status-label tools exist.

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 PATCH partial-update versus the sibling status-label update/get tools, and no mention of prerequisites such as the confirm=YES gate or permissions. 'Updates selected fields' is the only usage signal, and it is inferential rather than explicit.

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

snipeit_gen_statuslabelsidassetlistGET /statuslabels/{id}/assetlistC
Read-onlyIdempotent

GET /statuslabels/{id}/assetlist: View assets with a specific status label. Generated from Snipe-IT OpenAPI operation statuslabelsidassetlist.

NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered by structured data. The description adds nothing beyond that: no indication of pagination, result limits, or whether archived/deleted assets are included in the list.

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 single functional sentence is front-loaded and efficient, but the trailing 'Generated from Snipe-IT OpenAPI operation statuslabelsidassetlist' is boilerplate metadata that consumes roughly a third of the text without informing invocation.

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?

With no output schema and no annotation-derived return information, the description should clarify what a call yields (a collection of asset records, their fields, pagination). It only says 'View assets', which is too thin for an agent to predict the response shape or handle large result sets.

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 0% and there is one required parameter 'id' of type integer with no description. The description never states that 'id' is the status label identifier (the route implies it, but only if the agent parses the slug), leaving the sole parameter effectively undocumented.

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

Purpose3/5

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

The clause 'View assets with a specific status label' gives a plain-English verb+resource that the URL-shaped name does not, but the title/name is literally the route, so the description is largely a gloss on the identifier. It also fails to distinguish itself from the near-identical sibling snipeit_get_statuslabel_assets, which appears to target the same resource.

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 statement of when to prefer this over snipeit_get_statuslabel_assets or snipeit_list_hardware/snipeit_search_hardware. The only implied usage is 'you have a status label id and want its assets', which an agent must infer.

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

snipeit_gen_suppliersGET /suppliersD
Read-onlyIdempotent

GET /suppliers. Generated from Snipe-IT OpenAPI operation suppliers.

NameRequiredDescriptionDefault
faxNo
urlNo
zipNo
cityNo
nameNo
sortNoColumn to sort by (not declared in the spec for this operation, added by codegen)
emailNo
limitNoPage size (not declared in the spec for this operation, added by codegen)
notesNo
orderNoSort order (not declared in the spec for this operation, added by codegen)
offsetNoRows to skip (not declared in the spec for this operation, added by codegen)
searchNoText search (not declared in the spec for this operation, added by codegen)
addressNo
countryNo
address2No

TDQS

D1.6/5.0
Behavior2/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint), so the description owes context beyond that. It provides none — no indication of default page size, whether unfiltered results are truncated, or what the supplier collection contains beyond what the annotations imply.

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

Conciseness2/5

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

It is short and front-loaded, but the second sentence ('Generated from Snipe-IT OpenAPI operation suppliers.') is pure provenance noise that consumes half the definition without informing any decision. Brevity here comes from under-specification rather than disciplined editing.

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?

A 15-parameter list endpoint with no output schema and no annotation support for pagination or filtering semantics demands a real description, and this one has none. An agent cannot tell whether the ten string params filter server-side, whether results are paged by default, or what shape the response takes.

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?

With 15 parameters and only 33% schema description coverage, the description carries a heavy burden and delivers nothing. The codegen-added params (sort, limit, offset, order, search) are self-labeled, but the ten filter fields — fax, url, zip, city, name, email, notes, address, country, address2 — are completely undocumented as to whether they are exact-match filters or something else.

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 is essentially 'GET /suppliers' plus a codegen provenance note, which restates the tool name and title without adding interpretation. An agent can infer it retrieves a supplier collection, but nothing distinguishes it from siblings like snipeit_gen_suppliersid (single supplier fetch) or snipeit_gen_companies beyond the endpoint path.

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

Usage Guidelines1/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 versus snipeit_gen_suppliersid or snipeit_raw_request, no mention of pagination defaults, and no preconditions. The agent must guess based solely on the endpoint name.

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

snipeit_gen_suppliersidGET /suppliers/{id}C
Read-onlyIdempotent

GET /suppliers/{id}: /suppliers/:id. Generated from Snipe-IT OpenAPI operation suppliersid.

NameRequiredDescriptionDefault
idYes

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no mention of auth requirements, error behavior for unknown IDs, or what the endpoint returns.

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?

It is short and front-loaded, but the path is redundantly repeated in two formats and the 'Generated from...' provenance sentence contributes no operator-relevant 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?

For a lookup tool with no output schema, the description should explain what a supplier record contains or at least that it returns one record by ID. Neither is present, leaving the agent to infer the entire contract from the endpoint string.

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 0% for the single required 'id' parameter. The description only echoes '{id}' from the path, adding no meaning such as that it is the supplier record identifier, nor any format or range constraints.

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 only restates the HTTP method and path ('GET /suppliers/{id}: /suppliers/:id') and notes it was generated from the OpenAPI operation. It never says in plain language that this retrieves a single supplier record, and it does not distinguish itself from sibling snipeit_gen_suppliers (the list endpoint).

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 call this versus the list endpoint snipeit_gen_suppliers or the generic escape hatch snipeit_raw_request. Usage is only vaguely inferable from the path.

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

snipeit_gen_testinputPOST /licensesD
Destructive

POST /licenses: /licenses/. Generated from Snipe-IT OpenAPI operation testinput.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

D1.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that – it does not mention that a full license body must be created, that this is irreversible, or how the confirm gate behaves (only the schema's 'confirm' field explains that). 'testinput' is noise rather than disclosure.

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?

It is short, but it is under-specified rather than concise: two fragments that convey path and provenance only. No useful content is front-loaded because there is no useful content at all.

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 destructive, non-idempotent write with a large nested request body, no output schema, and no usage context, this description is wholly inadequate. An agent could not confidently construct a valid call from it.

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 50% and only the 'confirm' field carries a description; the 18-field nested body object (name, seats, category_id required, plus dates, costs, and IDs) is entirely undocumented semantically. The description compensates with zero information about any parameter, leaving the agent to guess field meaning and valid formats.

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 text restates the HTTP method and path ('POST /licenses: /licenses/') and adds only the opaque phrase 'operation testinput'. An agent can infer a create-license intent only from the path, not from any stated verb+resource. With ~150 sibling tools including snipeit_gen_licenses, snipeit_gen_licensesid_1, and snipeit_gen_put_licensesidseatsseat_id, this gives almost no differentiation.

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

Usage Guidelines1/5

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

There is no statement of when to use this tool, when not to, or which sibling alternative to prefer. Nothing distinguishes it from the other license endpoints or from snipeit_raw_request.

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

snipeit_gen_update_fieldsPUT /fields/{id}C
DestructiveIdempotent

PUT /fields/{id}: Update a custom field. Generated from Snipe-IT OpenAPI operation update-fields.

NameRequiredDescriptionDefault
idYesCustom field ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds no behavioral context beyond restating 'Update'—it does not explain what gets destroyed, the impact on existing field data, or the confirm requirement described in the schema.

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

Conciseness3/5

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

The description is short and front-loaded with the operation, but the second sentence ('Generated from Snipe-IT OpenAPI operation update-fields.') is provenance noise that does not help an agent invoke the tool.

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 destructive write tool with a required confirm parameter and a nested body object, but the description does not address those complexities. Annotations cover the safety hints, yet the description remains too thin for correct invocation and impact awareness.

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%, with id and confirm described in the schema, but the nested body's name and element properties have no descriptions. The description adds no parameter meaning, so it does not compensate for the gap in explaining what can be updated in a custom field.

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

Purpose3/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: 'Update a custom field.' However, it adds no scope or differentiation from the many sibling field-related tools (e.g., snipeit_gen_fieldsid, snipeit_gen_fieldsetsid), so an agent cannot tell when this is the right field mutation tool without opening schemas.

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

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, prerequisites, or when not to use it. The only contextual signal is the HTTP method in the title, which is not usage guidance.

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

snipeit_gen_usersGET /usersC
Read-onlyIdempotent

GET /users: List users. Generated from Snipe-IT OpenAPI operation users.

NameRequiredDescriptionDefault
allNoSet this to "true" if you want both deleted and active users
vipNoWhether or not the user is marked as a VIP (1 or 0 for true or false, respectively)
zipNo
sortNoField to order by
emailNo
limitNoNumber of records to return
orderNoSort order (asc or desc)
stateNo
filterNoKey value pair of the field you want to search on and the value, for example: `{"email":"info@example.com"}"`
offsetNoOffset to use when retrieving results (useful in pagination)
remoteNoWhether the user is marked as a remote worker or not (should be 0 or 1)
searchNoString to search on
countryNo
deletedNoSet this to "true" if you want to return only deleted users
end_dateNo
group_idNo
usernameNo
last_nameNo
company_idNo
first_nameNo
start_dateNo
ldap_importNoWhether the user was imported/synched with LDAP - should be 0 or 1
location_idNo
assets_countNoNumber of checked out assets
employee_numNo
department_idNo
licenses_countNoNumber of checked out licenses
accessories_countNoNumber of checked out accessories
consumables_countNoNumber of checked out consumables

TDQS

C2.3/5.0
Behavior2/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 safety is covered structurally. The description adds nothing behavioral beyond a provenance note ("Generated from Snipe-IT OpenAPI operation users") – no pagination defaults, no note that 29 optional filters all AND together, no response shape.

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

Conciseness3/5

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

It is short and front-loaded, but the leading "GET /users:" merely repeats the title and tool name, and the provenance sentence consumes a third of the text without informing the call.

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 29-parameter list endpoint with no output schema and no annotations explaining shape, the description omits everything an agent needs: filter interaction, pagination semantics, and returned fields. It is inadequate 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?

With 29 parameters and only 52% schema description coverage, several filters (zip, email, state, country, start_date, end_date, username, first_name, last_name, group_id, company_id, location_id, department_id, employee_num) are undocumented in both schema and description. The description gives no hint about how filtering, sorting, or the limit/offset pair behave, so 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.

Purpose3/5

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

It states a concrete verb and resource ("List users"), so the basic action is clear. But it does nothing to differentiate itself from the many close siblings such as snipeit_list_users, snipeit_gen_users_2, snipeit_gen_users_3 and snipeit_get_user, which an agent could not choose between from this text.

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 when-to-use guidance, no statement of what distinguishes this generated endpoint from the hand-written list/get user tools, and no mention of prerequisites or exclusions. The agent is left to infer everything.

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

snipeit_gen_users_2POST /usersC
Destructive

POST /users: Create a new user. Generated from Snipe-IT OpenAPI operation users-2.

NameRequiredDescriptionDefault
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. However, the description adds nothing about the required confirmation environment variable, required body fields, permission needs, or side effects of creating a user.

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?

It is short, but the first clause repeats the title and the generated-from note is boilerplate. The content is under-specified rather than efficiently informative.

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?

This is a destructive write operation with a large nested schema, a confirmation requirement, and no output schema. The description omits all operational details an agent would need to call it correctly.

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 50%, and the description provides no explanation of the nested body fields or the important 'confirm' parameter. It does not compensate for the many undocumented user-creation properties.

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

Purpose3/5

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

The description states a clear verb and resource ('Create a new user'), but 'POST /users' and the generated-operation note add little beyond the name/title. It does not differentiate this create-user operation from the many sibling user-related tools such as snipeit_gen_users or snipeit_gen_users_3.

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 guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. An agent must infer that this is the user-creation endpoint from the title and schema alone.

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

snipeit_gen_users_3PATCH /users/{id}A
DestructiveIdempotent

PATCH /users/{id}: Partially update a user, passing only the fields you want to modify. Generated from Snipe-IT OpenAPI operation users-3.

NameRequiredDescriptionDefault
idYesUser ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already disclose destructiveHint=true, idempotentHint=true, readOnlyHint=false, and openWorldHint=true. The description adds useful partial-update semantics ('passing only the fields you want to modify') but does not explain the confirm gate, mutation impact, or what happens to omitted fields.

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

Conciseness4/5

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

The description is short and front-loaded, stating the operation and partial-update behavior immediately. The trailing provenance sentence adds little invocation value, but the overall text contains no significant bloat.

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 destructive user-update operation with a large nested body, annotations and schema provide most of the necessary structure. The description is adequate but does not address the confirmation requirement, field-specific semantics, or mutation consequences beyond partial-update framing.

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 has moderate coverage (67%) and the description adds meaning to the nested body by framing it as a partial set of fields to modify. However, it does not explain the many body fields, the id parameter, or the confirmation parameter, so the schema remains the primary source.

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: 'Partially update a user' via PATCH /users/{id}. It clearly conveys the partial-update nature, though it does not differentiate this tool from similarly named generated user siblings.

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

Usage Guidelines4/5

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

It explicitly says to pass only the fields you want to modify, which gives clear context for when to use this PATCH operation rather than a full replacement. It does not name alternatives or exclusions, so it stops short of full routing guidance.

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

snipeit_gen_usersidGET /users/{id}C
Read-onlyIdempotent

GET /users/{id}: View user details. Generated from Snipe-IT OpenAPI operation usersid.

NameRequiredDescriptionDefault
idYesUser id

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive, so safety is covered. The description contributes nothing beyond that — no mention of authentication requirements, response shape, or difference from sibling lookups.

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?

Very short and front-loaded, which is good, but the trailing 'Generated from Snipe-IT OpenAPI operation usersid' is boilerplate that adds no value and consumes roughly half the text.

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 single-param read-only lookup with full schema coverage and annotations, the minimum is met. It falls short only in not disambiguating among the many sibling user-detail endpoints.

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?

Only one parameter with 100% schema description coverage ('User id'), so the schema fully documents it. Baseline 3 applies since the description adds no meaning beyond the schema.

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

Purpose3/5

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

States a specific verb and resource ('View user details' for GET /users/{id}'), so the basic purpose is clear. However, the catalog contains numerous near-identical user retrieval tools (snipeit_get_user, snipeit_gen_usersid_1, snipeit_gen_usersid_2, snipeit_gen_usersme), and the description offers no differentiation between them.

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 versus snipeit_get_user or the other usersid variants, and no prerequisites or context. The agent must infer usage from the HTTP path alone.

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

snipeit_gen_usersid_1DELETE /users/{id}C
DestructiveIdempotent

DELETE /users/{id}: Delete a user. Generated from Snipe-IT OpenAPI operation usersid-1.

NameRequiredDescriptionDefault
idYesUser id
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond that — it does not say whether the delete is soft (Snipe-IT conventionally soft-deletes) or hard, what happens to checked-out assets and licenses, or that a confirmation string may be required. 'Generated from Snipe-IT OpenAPI operation usersid-1' is provenance, not behavior.

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?

Very short and front-loaded with the action, which is good. However the trailing 'Generated from Snipe-IT OpenAPI operation usersid-1' is codegen boilerplate that consumes half the text without helping an agent decide or invoke.

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?

A destructive, open-world delete with no output schema needs the description to explain consequences and side effects; instead it says only 'Delete a user'. Nothing about irreversibility, soft vs hard delete, or affected relationships reaches the agent other than what the annotations already flag.

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% and both parameters (id, confirm) are documented in the schema, including the SNIPEIT_CONFIRM_WRITES semantics. The description contributes no additional parameter meaning, which is acceptable at this coverage level but earns only the baseline.

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 a specific verb and resource: 'Delete a user' against /users/{id}. An agent can tell this is a destructive delete-by-id operation, though the description makes no attempt to distinguish it from the many other generated users* operations (e.g. snipeit_gen_usersid_2, snipeit_gen_users_restore) beyond the HTTP path fragment.

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 when-to-use guidance, no mention of the restore counterpart (snipeit_gen_users_restore exists as a sibling) and no indication of preconditions such as whether assets must be checked in first. The only usage-relevant text is the generated-from note, which gives no operational direction.

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

snipeit_gen_usersid_2PUT /users/{id}C
DestructiveIdempotent

PUT /users/{id}: Update a user. Generated from Snipe-IT OpenAPI operation usersid-2.

NameRequiredDescriptionDefault
idYesUser ID
bodyNo
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description's job is to add detail — yet it adds nothing. Crucially, it says "Update a user" without disclosing that this is a PUT that replaces the user record, nor that omitted fields may be reset, nor the presence of the write-confirmation gate.

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?

It is short and front-loaded, which is good, but the second sentence ("Generated from Snipe-IT OpenAPI operation usersid-2") is pure provenance filler that gives an agent nothing actionable. Two sentences, one of which earns no place.

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 destructive write with a 21-field nested body, no output schema, and a conditional `confirm` requirement, this is significantly underspecified — no field semantics, no replacement-vs-merge behavior, no note on failure modes or required permissions.

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 67% and, worse, the nested `body` object contains 21 properties (vip, groups, permissions, password, two_factor_*, etc.) with no descriptions anywhere. The description does not name a single updatable field or clarify whether partial updates are safe, so 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.

Purpose3/5

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

The description names a verb and resource ("Update a user") on top of the raw path, so the purpose is graspable. But it says nothing about scope, and with siblings like snipeit_gen_usersid, snipeit_gen_usersid_1, snipeit_gen_users_2 and snipeit_gen_users_3 in the same family there is zero differentiation — an agent cannot tell which user-mutating endpoint this is without inspecting the schema.

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 indication of when to use this versus snipeit_gen_usersid_1, snipeit_get_user, or snipeit_raw_request, nor any prerequisites (e.g. that the `confirm` flag is required when SNIPEIT_CONFIRM_WRITES is enabled). The description offers no usage context at all.

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

snipeit_gen_usersidaccessoriesGET /users/{id}/accessoriesB
Read-onlyIdempotent

GET /users/{id}/accessories: Get a list of accessories checked out to the user. Generated from Snipe-IT OpenAPI operation usersidaccessories.

NameRequiredDescriptionDefault
idYesUser id

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds only the scoping detail that results are accessories checked out to a specific user; it says nothing about pagination, result size, or behavior with an invalid/unknown user id.

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?

Two short sentences, but the first redundantly restates the HTTP path already given in the title and the second is generator boilerplate ('Generated from Snipe-IT OpenAPI operation...') that adds no decision value.

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?

There is no output schema and the description doesn't hint at the response shape (IDs, accessory names, checkout dates) or pagination. For a simple read endpoint this is minimally adequate, but the duplicate sibling situation is unresolved.

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?

Single integer parameter with 100% schema description coverage ('User id'), so the schema carries the semantics. The description adds only the noun 'user' and no format or edge-case detail, which is the baseline expectation.

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 a specific verb and resource ('Get a list of accessories checked out to the user'), which is clearer than the cryptic tool name. However, it never distinguishes itself from the near-identical sibling snipeit_get_user_accessories, leaving an agent unable to pick between the two.

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 versus snipeit_get_user_accessories or the broader snipeit_get_user_assets. The only usage signal is implicit in the 'accessories checked out to the user' phrasing.

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

snipeit_gen_usersidassetsGET /users/{id}/assetsB
Read-onlyIdempotent

GET /users/{id}/assets: Get a list of assets checked out to the user. Generated from Snipe-IT OpenAPI operation usersidassets.

NameRequiredDescriptionDefault
idYesUser id
model_idNoValid model ID to filter on user's assets
category_idNoValid category ID to filter on within the user's assets

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is fully covered and the description only needs to add context. It does not mention pagination, ordering, or whether the resource is limited to currently checked-out items (as opposed to historically assigned), which is the one behavioral nuance left open.

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?

One tight sentence with the scope front-loaded, which is exactly right. The trailing 'Generated from Snipe-IT OpenAPI operation usersidassets' is provenance boilerplate with marginal agent value, keeping it out of the top score.

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 read-only, three-parameter list endpoint with no output schema, the description covers the essentials but not the ambiguities that matter: no return-shape hint, no pagination note, and no disambiguation from the duplicate sibling endpoint.

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 three parameters (id, model_id, category_id) documented in the schema, so the baseline is 3. The description adds 'checked out to the user' scope but says nothing extra about how the two optional filters combine or behave.

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 concrete verb and resource: list the assets checked out to a given user, keyed by user id. It is clear on its own, but it never addresses the existence of a near-identical sibling (snipeit_get_user_assets), leaving the agent unable to tell which of the two to pick.

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 when-to-use guidance: nothing says to use this for a specific user's checked-out hardware versus snipeit_list_hardware, snipeit_search_hardware, or the overlapping snipeit_get_user_assets. The only implied usage comes from the path itself.

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

snipeit_gen_usersideulasGET /users/{id}/eulasB
Read-onlyIdempotent

GET /users/{id}/eulas: Show the accepted EULAs by a specific user. Generated from Snipe-IT OpenAPI operation usersideulas.

NameRequiredDescriptionDefault
idYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no note on pagination, result size, or what an acceptance record contains — and the trailing "Generated from Snipe-IT OpenAPI operation" line is provenance metadata, not 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 operative sentence is short and front-loaded with the verb and resource. The second sentence is generator boilerplate that carries no decision value for an agent.

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 no output schema, the description could reasonably say what the EULA response contains or whether results are paginated, but it stops at restating the endpoint. Combined with annotations and a one-parameter schema this is adequate but thin.

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 0% on a single required integer parameter, so the description must carry the load. It does clarify that the parameter identifies a user ("by a specific user"), which is genuinely useful, but it gives no format hints (numeric database id vs. anything else) beyond that.

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 pairs a specific verb ("Show") with a precise resource ("accepted EULAs by a specific user"), which distinguishes it from sibling user sub-resource reads like get_user_assets or get_user_licenses. It falls short of 5 only because it doesn't explicitly name a sibling alternative.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, no mention of prerequisites, and no routing to alternatives such as snipeit_raw_request for unmodeled endpoints. The only implicit signal is that a user id is required.

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

snipeit_gen_usersidlicensesGET /users/{id}/licensesB
Read-onlyIdempotent

GET /users/{id}/licenses: Get a list of licenses checked out to the user. Generated from Snipe-IT OpenAPI operation usersidlicenses.

NameRequiredDescriptionDefault
idYesUser id

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds minor context by scoping results to licenses "checked out to the user," but says nothing about pagination, response shape, or whether inactive/returned licenses are included. With annotations carrying the load, this is adequate but thin.

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?

Two short sentences with no filler, so it is not bloated. But the front-loaded segment is a redundant restatement of the path/title, and the trailing "Generated from Snipe-IT OpenAPI operation usersidlicenses" is generator boilerplate that earns no place in the description.

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 single-parameter read-only list endpoint with no output schema, the definition supplies enough to make the call correctly. What is missing is the delta against the near-identical sibling tool and any hint about the returned collection, which leaves the agent to guess between duplicates.

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% with a single required integer 'id' documented as "User id," so the schema does the heavy lifting. The description's phrasing ("checked out to the user") only loosely reinforces that the id is a user id and adds no format or range meaning 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 states a concrete verb and resource ("Get a list of licenses checked out to the user"), which is far more useful than the raw path/title alone. It does not, however, distinguish this from sibling snipeit_get_user_licenses, which appears to serve the same purpose, so an agent cannot tell the two apart without inspecting both schemas.

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 when-to-use guidance, no prerequisites, and no mention of alternatives or exclusions. With a near-duplicate sibling (snipeit_get_user_licenses) in the catalog, this omission is significant rather than cosmetic.

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

snipeit_gen_usersmeGET /users/meB
Read-onlyIdempotent

GET /users/me: Get details on the current user accessing the API. Generated from Snipe-IT OpenAPI operation usersme.

NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds nothing beyond that—no mention of what the payload contains, auth/scope requirements, or any behavior of the self endpoint, only OpenAPI provenance boilerplate.

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 first sentence is efficient and front-loaded. The second sentence ('Generated from Snipe-IT OpenAPI operation usersme') is provenance boilerplate that adds no decision value for the agent and inflates the description.

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 zero-parameter read with no output schema, the agent still doesn't know what the response contains (user fields, permissions, etc.). The description is minimally sufficient to identify the call but leaves the return shape undocumented.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4; there is no parameter semantics to document and the description correctly presents it as a no-argument self lookup.

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 a specific verb (Get) and resource (details on the current user accessing the API), which is clearer than a bare name restatement. However, it does not differentiate itself from the sibling snipeit_me, which appears to be the same operation, leaving the agent unable to distinguish them from the description alone.

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 when-to-use guidance or named alternative. The phrase 'current user accessing the API' implies a self-lookup versus snipeit_get_user/snipeit_gen_usersid for other users, but the agent is left to infer this and no exclusions are stated.

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

snipeit_gen_users_restorePOST /users/{id}/restoreB
Destructive

POST /users/{id}/restore: Restore a soft-deleted user. Generated from Snipe-IT OpenAPI operation users-restore.

NameRequiredDescriptionDefault
idYesUser ID of a deleted user
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the write/safety profile is covered structurally. The description adds the meaningful constraint that the user must be soft-deleted, but omits failure behavior (e.g. restoring a non-deleted user) and any confirmation requirement beyond what the schema states.

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 substantive purpose statement front-loaded. The second sentence is auto-generated provenance boilerplate ("Generated from Snipe-IT OpenAPI operation users-restore") that adds little but costs little.

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?

No output schema exists, so the description needn't describe return values, and annotations carry the safety profile. However, for a destructive write against a generated endpoint, it should mention the soft-delete precondition more explicitly as a call requirement and note what happens on a non-deleted ID.

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%: `id` is documented as "User ID of a deleted user" and `confirm` as the exact string "YES" gated by SNIPEIT_CONFIRM_WRITES. The description adds nothing beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource: "Restore a soft-deleted user." This clearly separates it from the delete/update user siblings by naming the restore action and the soft-delete precondition. It does not name a specific sibling tool as an alternative, which keeps it below 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 gives no when-to-use/when-not-to-use guidance, no prerequisite that the target user must currently be soft-deleted, and no alternative (e.g. snipeit_raw_request or a create-user path) if the user is hard-deleted. Usage is only inferable from the verb.

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

snipeit_get_hardware_by_idGet hardware by idC
Read-onlyIdempotent

GET /hardware/{id}

NameRequiredDescriptionDefault
idYes

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond them — no note on whether the record includes custom fields, relations, or what happens on a nonexistent ID. It does not contradict the annotations.

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

Conciseness2/5

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

It is short and front-loaded, but that brevity is under-specification rather than conciseness — the entire description is a five-token endpoint path with no explanatory content to be concise about.

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?

With no output schema, the description carries the burden of explaining what is returned, and it says nothing about the response shape. For a retrieval tool in a crowded namespace with three other hardware-lookup siblings, this leaves the agent guessing on both input identity and output.

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 0% and the single 'id' parameter has no description in the schema. The URL template "{id}" only confirms that id is a path segment; it does not say the value is the Snipe-IT internal hardware/asset primary key (as opposed to an asset tag or serial, which have their own tools).

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 is the raw endpoint string "GET /hardware/{id}", which only restates the tool name and title in URL form. It gives no indication of what a 'hardware' record is or how this differs from siblings like snipeit_get_hardware_by_tag, snipeit_get_hardware_by_serial, or snipeit_list_hardware.

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 many alternatives in the sibling list (fetch by tag, by serial, list, search). The agent must infer that this is the numeric-ID lookup variant purely from the tool name.

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

snipeit_get_hardware_by_serialGet hardware by serialC
Read-onlyIdempotent

GET /hardware/byserial/{serial}

NameRequiredDescriptionDefault
serialYes
deletedNotrue to include deleted assets

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the 'GET' verb merely corroborates what is known. The description discloses nothing extra such as exact-match vs partial-match behavior, what happens on a serial not found, whether soft-deleted assets appear by default, or any auth/rate-limit context.

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 single line is short but that is under-specification rather than conciseness; there is no front-loaded statement of purpose, and the endpoint string is the least useful way to phrase it for an agent.

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?

With no output schema, two parameters, and 130+ sibling tools in this server, the description should say what a hit returns (single asset object vs list), how uniqueness/not-found is handled, and how it differs from by_id/by_tag lookups. None of that is present.

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 50% and the description adds nothing: 'serial' is undocumented in both places (format, case sensitivity, exact vs fuzzy match) and the '{serial}' placeholder merely repeats the name. The 'deleted' flag's meaning is carried by the schema alone, which the description does not reinforce.

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 is the raw endpoint string "GET /hardware/byserial/{serial}", which essentially restates the tool name and title rather than stating what the tool does in agent-facing terms. It does convey a read operation keyed on serial, but adds no explanation of what a 'hardware' record is or what is returned.

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 prefer this over the many close siblings (snipeit_get_hardware_by_id, snipeit_get_hardware_by_tag, snipeit_search_hardware, snipeit_list_hardware). The endpoint path implies 'exact serial lookup' but never states it, and there are no exclusion or fallback rules.

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

snipeit_get_hardware_by_tagGet hardware by asset tagC
Read-onlyIdempotent

GET /hardware/bytag/{tag}: tag is URL-encoded automatically.

NameRequiredDescriptionDefault
tagYes
deletedNotrue to include deleted assets

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so safety is covered. The description adds only the URL-encoding behavior; it says nothing about what happens on a missing tag (error vs. empty), how the `deleted` flag changes the response, or what a match returns.

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 compact sentence with the endpoint first and the encoding caveat second — no filler. It is efficient, though the brevity reflects under-specification rather than disciplined editing.

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?

With no output schema and no annotation gap, the description still leaves an agent unsure what a 'tag' is, what a successful response contains, and how lookup misses surface. For a lookup tool paired with many near-identical siblings, that is a substantial gap.

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 50%: `deleted` is documented in the schema but `tag` is not. The description contributes only the encoding note for `tag` (useful but narrow) and says nothing about matching rules such as case sensitivity or whether a partial tag is accepted, and nothing about `deleted` beyond the schema.

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

Purpose3/5

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

The description gives the endpoint path and names the resource (hardware by tag), so the verb+resource is inferable. However, it never states that 'tag' means the asset tag, nor distinguishes this from the very similar siblings snipeit_get_hardware_by_id, snipeit_get_hardware_by_serial and snipeit_gen_hardware_by_asset_tag — the title carries that differentiation, not the description.

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 statement of when to use this lookup versus the by-id, by-serial, or search_hardware alternatives that sit alongside it. The only guidance is implicit in the endpoint name, which an agent must already understand to pick correctly.

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

snipeit_get_license_seatsGet seats for a licenseC
Read-onlyIdempotent

GET /licenses/{id}/seats: list all seats for a license.

NameRequiredDescriptionDefault
idYes
limitNo
offsetNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description contributes nothing further: no indication of whether seats are paginated, whether unassigned seats are included, or what a seat record represents, which matters for an openWorldHint=true tool.

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?

It is a single front-loaded sentence with no filler, which is good. But the 'GET /licenses/{id}/seats:' prefix is largely redundant with the tool name and adds no decision-relevant information, so the brevity comes from omission rather than economy.

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?

With no output schema and no annotations explaining return contents, the description should say at least what a seat record contains or how results are paginated. Instead it stops at restating the endpoint, which is insufficient for an agent to call it confidently or interpret the 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 0%, so the description carries the full burden for the three parameters. It only implies that id is a license identifier via the path template; limit (max 500) and offset are never mentioned, so pagination semantics are entirely undocumented.

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

Purpose3/5

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

The description names a specific verb (list) and resource (seats for a license) and echoes the HTTP path, so the operation is identifiable. However, it adds nothing beyond the title 'Get seats for a license' and does not distinguish it from near-duplicate siblings such as snipeit_gen_licensesidseats or snipeit_get_user_licenses, leaving the agent to infer the difference.

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 statement of when to use this tool versus snipeit_list_licenses, snipeit_get_user_licenses, or snipeit_checkout_license_seat. The agent gets no exclusion criteria and no hint that this is the read-only seat-inventory view rather than the checkout mutation.

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

snipeit_get_locationGet location by idC
Read-onlyIdempotent

GET /locations/{id}: retrieve a single location record.

NameRequiredDescriptionDefault
idYes

TDQS

C2.8/5.0
Behavior2/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 fully covered elsewhere. The description adds nothing beyond that – no notes on error behavior for missing ids, no auth requirements, no mention of what the returned record contains.

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?

One short, front-loaded sentence with no filler. It is efficient, though it is largely a restatement of the underlying HTTP endpoint rather than added information.

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

Completeness3/5

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

A simple single-parameter read tool with rich annotations needs little, and the description conveys the basic contract. However, with no output schema the agent has no idea what a 'location record' contains, and that gap is left unaddressed.

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 0% for the single required 'id' parameter. The description only implies via the REST path that the id identifies a location; it does not clarify whether it is the internal numeric id versus a name/tag, nor any format constraints.

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 a specific verb ('retrieve') and resource ('a single location record'), which distinguishes it from the list-locations sibling. It does not name that sibling explicitly, 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?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as snipeit_list_locations or snipeit_gen_locationsid. The only hint is the word 'single', which the agent must infer means 'use when you already have an id'.

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

snipeit_get_statuslabel_assetsGet assets for a status labelB
Read-onlyIdempotent

GET /statuslabels/{id}/assetlist: returns paginated assets that have this status label assigned.

NameRequiredDescriptionDefault
idYesStatus label ID
limitNo
offsetNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so safety is covered. The description's only added behavior is that results are 'paginated', which is minor; it says nothing about ordering, default page size, or the fact that the asset list can be large.

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?

One compact sentence, front-loaded with the endpoint and the key predicate. Nothing is wasted, though the brevity borders on under-specification given the undocumented pagination parameters.

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 read-only list endpoint with no output schema, the description is minimally adequate: an agent knows it gets assets for a status label. It omits response shape (bare asset list vs. wrapped object), pagination defaults, and how it differs from the many sibling list tools.

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 33% — only 'id' is documented in the schema; 'limit' and 'offset' have no descriptions at all. The description's single word 'paginated' does not explain the limit's 1-500 bounds, defaults, or offset semantics, so 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.

Purpose4/5

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

Names a specific resource and relationship: assets having a given status label, with the underlying endpoint stated. Clear verb+resource, though it doesn't differentiate from the near-identical sibling snipeit_gen_statuslabelsidassetlist, which appears to wrap the same endpoint.

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 phrase 'assets that have this status label assigned' implies the use case (enumerating assets by status), but there is no explicit when-to-use, no exclusions, and no pointer to alternatives such as listing hardware or the duplicate statuslabel-assetlist sibling.

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

snipeit_get_userGet user by idC
Read-onlyIdempotent

GET /users/{id}

NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, destructiveHint=false, so safety is covered. The description adds nothing beyond the raw path: no auth/permission notes, no indication of what is returned, no behavior if the id does not exist (404 vs empty).

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?

Extremely short and front-loaded with zero waste, but its brevity comes from omission rather than precision — it is a bare endpoint reference rather than a compressed explanation.

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?

With no output schema, 0% schema description coverage, and dozens of near-identical user/hardware sibling tools, the description needs to carry more: what a user record contains, id semantics, and how it differs from list_users/me. As written an agent cannot confidently choose this over siblings.

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 0% and the single 'id' parameter is undocumented in the schema. The description only reveals that id is a path segment; it does not clarify that it is the Snipe-IT internal user id (as opposed to username, email, or employee number), which matters given sibling tools keyed on other identifiers.

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

Purpose3/5

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

The description is just the HTTP path 'GET /users/{id}', which together with the title 'Get user by id' does convey retrieving a single user record by identifier. However it offers no natural-language statement of purpose and does nothing to distinguish it from siblings like snipeit_list_users, snipeit_me, or snipeit_gen_usersid, which sit in the same space.

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 versus snipeit_list_users, snipeit_me, or snipeit_get_user_assets/licenses/accessories. The endpoint path implies 'fetch one user by numeric id', but no alternatives or exclusions are mentioned.

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

snipeit_get_user_accessoriesGet accessories checked out to a userC
Read-onlyIdempotent

GET /users/{id}/accessories

NameRequiredDescriptionDefault
idYes

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered structurally. The description adds nothing beyond the route: no note on pagination, response shape, whether it includes checked-in accessories, or error behavior for unknown user ids. With annotations doing all the work, this is a minimal contribution.

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?

It is short but by under-specification, not conciseness — there is no prose to be front-loaded because there is no prose at all. A single route string is not a usable summary of behavior.

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?

There is no output schema, so the description should explain what is returned (accessory records, quantities, checkout dates, pagination). It does none of that, and with a large sibling set containing near-duplicate endpoints, an agent has no basis to pick this one 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?

Schema description coverage is 0% and the single parameter 'id' has no description in the schema. The route template '{id}' hints that it is the user id, but no format, type constraints, or examples are given beyond the schema's integer type. The description barely compensates for the coverage gap.

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 is nothing but the raw HTTP route 'GET /users/{id}/accessories'. It technically identifies the resource (accessories for a user), but it restates the tool name rather than explaining what the tool does in agent-readable terms. It does not differentiate itself from close siblings such as snipeit_gen_usersidaccessories, which appears to target the same endpoint.

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 about when to use this tool versus alternatives (e.g., snipeit_list_accessories or snipeit_gen_usersidaccessories). The agent must infer usage purely from the route string. The closest thing to guidance is the implied 'read accessories belonging to a user', which is not explicit.

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

snipeit_get_user_assetsGet assets checked out to a userC
Read-onlyIdempotent

GET /users/{id}/assets: list hardware checked out to this user.

NameRequiredDescriptionDefault
idYes
limitNo
offsetNo

TDQS

C2.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 and destructiveHint=false, so the safety profile is covered. The description adds one genuine behavioral detail — that results are scoped to items currently checked out to that user — but says nothing about pagination, default page size, or ordering, which matters for a paginated list endpoint.

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 short sentence with the resource and scope front-loaded and no filler. It is efficient, though the terseness leaves no room for the paging and alternative-selection information an agent actually needs.

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?

With no output schema and no parameter descriptions, the description carries the full burden and does not meet it: return shape, pagination behavior, and how to distinguish this from the many sibling user-scoped endpoints are all absent.

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 0% across all three parameters. The endpoint path implies that 'id' is the user identifier, but limit and offset are completely undocumented in both schema and description — no default, no max, no paging guidance beyond the schema's numeric bounds.

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 a specific verb (list) and resource (hardware checked out to a user), and even names the underlying endpoint, so an agent knows exactly what it returns. It does not differentiate itself from siblings such as snipeit_gen_usersidassets or snipeit_get_user_accessories, which address the same or adjacent resources.

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 statement of when to prefer this tool over snipeit_list_hardware, snipeit_search_hardware, or the parallel per-user endpoints for accessories and licenses. The one clause 'checked out to this user' only hints at the condition, leaving the choice between siblings to inference.

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

snipeit_get_user_licensesGet licenses assigned to a userC
Read-onlyIdempotent

GET /users/{id}/licenses

NameRequiredDescriptionDefault
idYes

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered externally. The description adds nothing beyond the path: no note about pagination, what fields the returned licenses include, or whether expired/seats data is included.

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?

It is extremely short, but this is under-specification rather than concision. There is no front-loaded statement of purpose or behavior, just an endpoint string.

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 read tool with no output schema and 0% schema description coverage, the description should explain the response shape and how this differs from sibling license tools. It does neither, leaving the agent to infer nearly everything.

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 0% with a single required `id` parameter, so the description does benefit by showing the `{id}` path template, implying it is the user id. Still, it gives no format details, no constraints, and no clarification beyond that inline hint.

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

Purpose3/5

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

The description is only the raw endpoint path "GET /users/{id}/licenses"; meaning is largely carried by the title, 'Get licenses assigned to a user.' A reader can infer verb (fetch) and resource (a user's licenses), but there is no differentiation from the near-identical sibling snipeit_gen_usersidlicenses or from snipeit_get_license_seats.

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

Usage Guidelines1/5

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

There is no guidance whatsoever on when to use this tool, when not to, or which sibling to prefer (e.g., snipeit_gen_usersidlicenses or snipeit_get_license_seats). The agent must guess based solely on name and title.

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

snipeit_list_accessoriesList accessoriesB
Read-onlyIdempotent

GET /accessories: paginated list. Supports search and common filters.

NameRequiredDescriptionDefault
allNoIf true, auto-paginate up to 10,000 rows or until the result size cap; if the cap is hit the result has truncated: true and next_offset to continue with limit/offset
limitNoPage size (default 50, max 500)
offsetNo
searchNo
company_idNoFilter by company ID (not in the vendored API spec; server-side support unverified)
category_idNoFilter by category ID (not in the vendored API spec; server-side support unverified)
location_idNoFilter by location ID (not in the vendored API spec; server-side support unverified)
manufacturer_idNoFilter by manufacturer ID (not in the vendored API spec; server-side support unverified)

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds that it is a 'paginated list' and 'supports search and common filters,' which is useful behavioral context beyond the annotations, but it does not elaborate on pagination mechanics, rate limits, or 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?

The description is two short sentences, front-loaded with the endpoint and primary function. It is efficient and easy to parse, though it could be slightly more structured by explicitly separating purpose and capabilities.

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?

With 8 parameters and no output schema, the description is too brief to fully equip an agent. It omits important details like the behavior of the 'all' parameter (auto-pagination with truncation) and the fact that filter parameters may have unverified server-side support, which are critical for correct invocation.

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 75%, so some parameters (e.g., search, offset) lack schema-level descriptions. The description mentions 'search' and 'common filters,' providing minimal additional meaning, but it does not clarify the undocumented parameters or detail filter behavior.

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

Purpose4/5

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

The description states a specific verb (GET) and resource (accessories), making the core purpose clear. It does not, however, differentiate this tool from sibling list tools like snipeit_list_hardware or snipeit_search_hardware, which is why 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?

The description offers no guidance on when to use this tool versus alternatives. It does not mention any conditions, prerequisites, or exclusions that would help an agent choose between this and other list or search tools.

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

snipeit_list_audit_dueList audits dueD
Read-onlyIdempotent

GET /hardware/audit/due

NameRequiredDescriptionDefault
allNoIf true, auto-paginate up to 10,000 rows or until the result size cap; if the cap is hit the result has truncated: true and next_offset to continue with limit/offset
limitNo
offsetNo

TDQS

D1.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety story is covered. The description contributes nothing beyond the path — no note on result shape, whether overdue items are included, or how audit-due is computed.

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?

It is short, but that brevity reflects under-specification rather than efficiency — a single endpoint path with no front-loaded statement of what the tool does or returns.

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 paginated list tool with no output schema and partially undocumented parameters, the description should at least explain the resource and pagination semantics. Neither is present, leaving the agent to guess from the endpoint string.

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?

Three parameters with only 33% schema description coverage: 'all' is documented, but 'limit' and 'offset' have no descriptions in the schema and no explanation in the tool description. The description fails to compensate for the coverage gap in a paginated list tool.

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 is only the raw HTTP path 'GET /hardware/audit/due', effectively restating the name and title. It never states in prose that this lists hardware assets due for auditing, nor does it distinguish 'due' from the sibling snipeit_list_audit_overdue or snipeit_gen_hardwareauditdue.

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

Usage Guidelines1/5

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

No guidance at all on when to call this versus snipeit_list_audit_overdue, snipeit_audit_hardware, or the generic snipeit_raw_request. The agent must infer the due-vs-overdue distinction from the tool name alone.

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

snipeit_list_audit_overdueList audits overdueD
Read-onlyIdempotent

GET /hardware/audit/overdue

NameRequiredDescriptionDefault
allNoIf true, auto-paginate up to 10,000 rows or until the result size cap; if the cap is hit the result has truncated: true and next_offset to continue with limit/offset
limitNo
offsetNo

TDQS

D1.3/5.0
Behavior1/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered, but the description adds no behavioral context whatsoever — nothing about pagination defaults, result size caps, or what the response contains. A bare endpoint string contributes zero information beyond the annotations.

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

Conciseness2/5

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

It is technically one line with no filler, but this is under-specification rather than conciseness — the single token string 'GET /hardware/audit/overdue' carries no explanatory content and is not a useful front-loaded summary.

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?

A three-parameter tool with no output schema and 33% parameter documentation needs the description to explain scope, pagination, and return shape; the description supplies none of that. An agent cannot determine correct usage from this definition.

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%: only 'all' is documented (richly, including the truncated/next_offset behavior), while 'limit' and 'offset' have no descriptions in either schema or description. With low coverage the description must compensate, and it says nothing about any parameter.

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 is nothing but the raw endpoint 'GET /hardware/audit/overdue', which restates the tool name/title rather than explaining the operation. It does not say what an overdue audit is, what a returned row represents, or how this differs from the closely named siblings snipeit_list_audit_due and snipeit_audit_hardware.

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

Usage Guidelines1/5

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

There is no guidance at all about when to call this versus snipeit_list_audit_due (due audits) or snipeit_audit_hardware (performing an audit). The agent must infer the distinction from tool names alone.

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

snipeit_list_componentsList componentsC
Read-onlyIdempotent

GET /components: paginated list. Supports search and common filters.

NameRequiredDescriptionDefault
allNoIf true, auto-paginate up to 10,000 rows or until the result size cap; if the cap is hit the result has truncated: true and next_offset to continue with limit/offset
limitNoPage size (default 50, max 500)
offsetNo
searchNo
company_idNo
category_idNo
manufacturer_idNo

TDQS

C2.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 fully covered without the description. The description adds only "paginated list," which is modest but real context about result shape; it omits anything about default page sizing, truncation behavior, or permissions.

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

Conciseness4/5

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

Two short clauses, front-loaded with the endpoint and resource, with no filler or redundancy. Brevity here is efficient if under-informative, but nothing in the text wastes the reader's space.

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?

With seven optional parameters, 29% schema coverage, and no output schema, the description carries real burden and does not meet it — the filter dimensions and the pagination/truncation contract are left entirely to the schema. An agent can call the tool, but must open the schema to know what it can filter on.

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 29% (two of seven parameters), so the description needs to compensate and does not: it never names company_id, category_id, or manufacturer_id, gesturing only at "common filters." It does flag that `search` exists, which is the one parameter meaning it adds beyond the schema's documented `all` and `limit`.

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 names a concrete verb and resource ("GET /components: paginated list") so an agent immediately knows it retrieves the components collection in pages. It does not, however, differentiate this tool from near-namesake siblings such as snipeit_gen_components or snipeit_gen_components_1, leaving the agent to guess which list endpoint is canonical.

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 statement of when to use this tool versus alternatives — nothing about preferring it over snipeit_gen_components or snipeit_raw_request, and no guidance on when pagination vs the `all` flag is appropriate. "Supports search and common filters" hints at a use case but names no condition or exclusion.

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

snipeit_list_consumablesList consumablesB
Read-onlyIdempotent

GET /consumables: paginated list. Supports search and common filters.

NameRequiredDescriptionDefault
allNoIf true, auto-paginate up to 10,000 rows or until the result size cap; if the cap is hit the result has truncated: true and next_offset to continue with limit/offset
limitNoPage size (default 50, max 500)
offsetNo
searchNo
company_idNo
category_idNo
manufacturer_idNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds that the result is paginated and searchable, but does not explain truncation behavior, next_offset usage, authentication needs, or rate limits beyond what the schema already states.

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

Conciseness5/5

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

Two short sentences, front-loaded with the endpoint and pagination behavior. There is no redundant or wasted text, even though 'common filters' is vague.

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 7-parameter list tool with no output schema and many sibling consumable-related endpoints, this definition is too sparse. It does not specify which filters are available, what the response contains, or why an agent should choose it over sibling listing tools.

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 29%; only 'all' and 'limit' are described in the schema. The description's phrase 'common filters' does not identify company_id, category_id, manufacturer_id, offset, or search semantics, so it 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?

Names the resource (consumables) and the operation (GET /consumables: paginated list), so the core purpose is clear. However, it does not distinguish this from sibling tools such as snipeit_gen_consumables_1, snipeit_list_accessories, or snipeit_list_components.

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 guidance on when to use this tool versus the many other consumables/listing endpoints. It also provides no exclusions, prerequisites, or conditions for choosing this over snipeit_gen_consumables_1 or snipeit_raw_request.

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

snipeit_list_hardwareList hardware (assets)C
Read-onlyIdempotent

GET /hardware: paginated. Supports search and common filters.

NameRequiredDescriptionDefault
allNoIf true, auto-paginate up to 10,000 rows or until the result size cap; if the cap is hit the result has truncated: true and next_offset to continue with limit/offset
sortNo
limitNoPage size (default 50, max 500)
orderNo
filterNoJSON object of field/value pairs to match, e.g. {"name":"hello","asset_tag":"12345"}
offsetNo
searchNo
statusNoStatus type: RTD, Deployed, Undeployable, Deleted, Archived or Requestable
model_idNo
status_idNo
company_idNo
assigned_toNoOnly assets checked out to this id (see assigned_type in the generated tool)
category_idNo
location_idNo
order_numberNoOnly assets with this order number
manufacturer_idNo

TDQS

C2.6/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so safety and side-effect behavior are covered elsewhere. The description adds only that the endpoint is paginated and supports search/filtering; it does not explain truncation behavior, the 10,000-row auto-pagination cap, or rate-limit implications.

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 very short and front-loaded with the endpoint and pagination fact, so it is concise. However, the extreme brevity leaves out important selection and parameter details, making it under-specified rather than perfectly 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?

For a 16-parameter listing endpoint with no output schema, the description is incomplete: it omits guidance on pagination/truncation behavior, the meaning of most filters, and how this differs from other hardware search/list tools. The annotations cover read-only safety, but the remaining operational context is insufficient.

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?

With 16 parameters and only 38% schema description coverage, the description must compensate but instead says only 'supports search and common filters.' Several filter parameters such as model_id, status_id, company_id, category_id, location_id, and manufacturer_id are undocumented in both schema and description, so an agent lacks clear semantics for most filters.

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

Purpose3/5

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

The description identifies the endpoint and general capability (GET /hardware, paginated, supports search and filters), so an agent can infer it lists hardware. However, it does not distinguish this tool from close siblings such as snipeit_search_hardware or snipeit_gen_hardware_list, leaving the agent to guess which list/search endpoint to use.

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 instead of snipeit_search_hardware, snipeit_raw_request, or the generated hardware list tools. The mention of search and filters implies a broad list operation, but no conditions or alternatives are stated.

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

snipeit_list_licensesList licensesC
Read-onlyIdempotent

GET /licenses: paginated list. Supports search and common filters.

NameRequiredDescriptionDefault
allNoIf true, auto-paginate up to 10,000 rows or until the result size cap; if the cap is hit the result has truncated: true and next_offset to continue with limit/offset
limitNoPage size (default 50, max 500)
offsetNo
searchNo
company_idNo
maintainedNo
category_idNo
supplier_idNo
depreciation_idNo
manufacturer_idNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that results are paginated, which annotations do not say, but it omits the interaction between the 'all' auto-pagination mode and limit/offset, and says nothing about the cap or truncation behavior that the schema hints at.

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 clauses, front-loaded with the HTTP path and the list nature. Nothing is wasted, though the terseness borders on under-specification rather than tight editing.

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 10-parameter tool with no output schema and only 20% schema documentation, the description does far too little: it never explains the filters, the auto-paginate 'all' mode, or what the returned list contains. An agent could call it, but would be guessing on most parameters.

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%, so the description must compensate for eight essentially undocumented filter parameters (company_id, maintained, category_id, supplier_id, depreciation_id, manufacturer_id, offset, search). 'Supports search and common filters' names a capability without explaining any filter's semantics or how the pagination parameters combine.

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 (GET/list) and resource (licenses) plus a key scope trait (paginated). It is clear what the tool returns, but it does not distinguish itself from nearby siblings such as snipeit_get_user_licenses or snipeit_get_license_seats, leaving the agent to infer the boundary.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. 'Supports search and common filters' hints at capability but does not tell an agent which situations select this tool over snipeit_get_user_licenses or snipeit_list_accessories.

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

snipeit_list_locationsList locationsB
Read-onlyIdempotent

GET /locations: paginated list. Supports search and optional parent_id filter.

NameRequiredDescriptionDefault
allNoIf true, auto-paginate up to 10,000 rows or until the result size cap; if the cap is hit the result has truncated: true and next_offset to continue with limit/offset
limitNoPage size (default 50, max 500)
offsetNo
searchNo
parent_idNoFilter by parent location ID (not in the vendored API spec; server-side support unverified)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds only 'paginated', and omits notable behavior disclosed in the schema such as the auto-pagination cap of 10,000 rows, truncation flags, and the unverified status of parent_id server support.

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 compact sentence, front-loaded with the endpoint and operation. Efficient, though its brevity comes at the cost of the behavioral detail noted above.

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 zero-required-param read-only list with rich annotations, this is minimally adequate. However, the auto-pagination / truncation behavior (via the `all` parameter) is significant for correct invocation and is not surfaced in the description.

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 60%; the schema itself documents `all`, `limit`, and the caveat on `parent_id`. The description repeats search/parent_id filtering but adds no syntax or meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose4/5

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

States the resource (locations) and the operation (GET a paginated list) clearly, so the agent knows this is a read/list endpoint. It does not differentiate itself from the many sibling location tools (snipeit_get_location, snipeit_gen_locations, etc.), which is the main gap.

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?

Mentions that search and parent_id filtering are supported, but gives no explicit when-to-use guidance or alternative routing (e.g., when to use snipeit_get_location for a single location instead). Usage is only implied.

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

snipeit_list_maintenancesList asset maintenancesB
Read-onlyIdempotent

GET /maintenances: paginated list. Optionally filter by asset_id, supplier_id, or maintenance type.

NameRequiredDescriptionDefault
allNoIf true, auto-paginate up to 10,000 rows or until the result size cap; if the cap is hit the result has truncated: true and next_offset to continue with limit/offset
limitNoPage size (default 50, max 500)
offsetNo
asset_idNoFilter by asset ID
supplier_idNoFilter by supplier ID (not in the vendored API spec; server-side support unverified)
asset_maintenance_typeNoFilter by maintenance type (e.g. 'Maintenance', 'Repair', 'PAT Test') (not in the vendored API spec; server-side support unverified)

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare this is a safe, idempotent read (readOnlyHint=true, destructiveHint=false, idempotentHint=true), so the description does not need to restate safety. It adds the paginated-list nature and filterable fields, but does not discuss pagination semantics (all/limit/offset, truncation behavior) that would be useful context beyond the annotations.

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

Conciseness4/5

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

One tight sentence, front-loaded with the endpoint and list purpose followed by the filter hint. No wasted words, though the raw HTTP path is slightly implementation-flavored rather than task-oriented.

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 six optional parameters, no output schema, and rich annotations, the description is adequate but thin: it omits any mention of pagination controls (all/limit/offset) and the unverified nature of supplier_id and asset_maintenance_type filters, both of which are only in the schema. It is not wrong, but it leaves important operational context for the agent to discover elsewhere.

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 high (83%), so the schema already documents limit, offset, all, and the filter params in detail. The description only names three of the six filters and adds no syntax or behavioral meaning beyond the schema, making the baseline 3 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 names a specific verb (list) and resource (asset maintenances), plus the underlying GET /maintenances endpoint and pagination/filter capability. It is clear on its own, but it does not distinguish itself from the many sibling maintenance tools (e.g., snipeit_gen_maintenances, snipeit_create_maintenance), leaving the agent to infer the difference.

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 only implied: 'paginated list' and 'optionally filter' suggest a read/query operation, but there is no explicit statement of when to choose this over snipeit_gen_maintenances, snipeit_raw_request, or snipeit_create_maintenance. No exclusions or preconditions are given.

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

snipeit_list_statuslabelsList status labelsC
Read-onlyIdempotent

GET /statuslabels: paginated list. Supports search.

NameRequiredDescriptionDefault
allNoIf true, auto-paginate up to 10,000 rows or until the result size cap; if the cap is hit the result has truncated: true and next_offset to continue with limit/offset
limitNoPage size (default 50, max 500)
offsetNo
searchNo
status_typeNoOnly labels of this type

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive behavior, so the safety profile is covered. The description's only behavioral content is 'paginated list' and 'supports search', both of which are already documented in the input schema (the all/limit parameters spell out pagination and truncation semantics). It adds no context on result shape, sorting, rate limits, or the 10,000-row cap.

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 clauses, front-loaded with the verb and resource; no filler. It is close to under-specified rather than verbose, but nothing needs deleting.

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 zero-required-param read-only list tool with coverage from annotations and a mostly-described schema, this is minimally adequate. Gaps remain: no mention of the status_type filter, no hint of the response envelope, and no differentiation from the duplicate sibling tools.

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 60%: offset and search are undocumented in the schema, and the description's phrase 'supports search' adds partial meaning for the search parameter. It says nothing about the status_type enum filter, which is documented in the schema but is the main way to narrow results.

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 the endpoint and resource explicitly ('GET /statuslabels') and characterizes the result as a paginated list supporting search. An agent can identify it as a read/list operation on status labels, though it does not differentiate itself from the near-duplicate siblings like snipeit_gen_statuslabels or from snipeit_get_statuslabel_assets.

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 choose this tool over the many alternative list/get status-label tools in the sibling set, and no preconditions or exclusions are stated. The agent must infer usage from the name alone.

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

snipeit_list_usersList usersC
Read-onlyIdempotent

GET /users: paginated list. Supports search and common filters.

NameRequiredDescriptionDefault
allNoIf true, auto-paginate up to 10,000 rows or until the result size cap; if the cap is hit the result has truncated: true and next_offset to continue with limit/offset
limitNoPage size (default 50, max 500)
offsetNo
searchNo
deletedNo
group_idNo
company_idNo
location_idNo
department_idNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered elsewhere. The description adds essentially nothing beyond that — the pagination claim is already spelled out in the `all`/`limit` schema fields, and there is no mention of auth needs, default ordering, or truncation behavior.

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?

Two short fragments, front-loaded and free of padding, so nothing is wasted. But the brevity is achieved by omission rather than efficiency, and the "GET /users" prefix largely restates the name and title.

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?

With 9 optional parameters, 22% schema coverage, and no output schema, an agent needs the description to explain filter semantics and result shape. The description provides neither, leaving the majority of callable surface undocumented.

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 22%: `all` and `limit` are documented, but offset, search, deleted, group_id, company_id, location_id and department_id are bare. The description's vague "search and common filters" does not identify which filters exist or what they accept, so 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.

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 ("GET /users: paginated list"), which is enough for an agent to know this returns a collection of users. It does not differentiate from nearby siblings such as snipeit_get_user or snipeit_gen_users, 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?

"Supports search and common filters" hints at capability but never says when to use this list endpoint versus snipeit_get_user, snipeit_me, or snipeit_raw_request. No prerequisites, 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.

snipeit_meWho am IA
Read-onlyIdempotent

GET /users/me: returns the current authenticated user. Use to verify token + base URL.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds real value by disclosing that the call is an authentication/connectivity probe returning the caller's own identity. No contradiction with annotations.

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

Conciseness5/5

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

Two short sentences, endpoint and behaviour first, usage hint second. No filler.

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 zero-parameter read with no output schema, the description supplies the essential facts: what it returns and why you would call it. It could briefly sketch the returned user shape, but the tool is simple enough that this is a minor gap.

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?

Zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly implies no input is required.

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 a specific verb and resource ('returns the current authenticated user') and even cites the underlying endpoint GET /users/me. It does not differentiate itself from the near-identical sibling snipeit_gen_usersme, which is the only gap.

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 use case: verifying the token and base URL, which is a genuine when-to-use signal. It stops short of stating when not to use it (e.g., versus snipeit_gen_usersme or snipeit_list_users).

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

snipeit_raw_requestSnipe-IT raw requestA
Destructive

Generic escape hatch: executes ANY HTTP method against SNIPEIT_API_BASE{path}. Use when no dedicated tool exists. Bearer auth, retry, status-envelope check, and pagination hint are handled automatically.

NameRequiredDescriptionDefault
bodyNoJSON body for POST/PUT/PATCH
pathYesRelative path beginning with a single "/", resolved against SNIPEIT_API_BASE. Example: "/hardware/42". Absolute URLs and other hosts are rejected.
queryNoQuery parameters
methodYesHTTP method
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructive, open-world, non-idempotent behavior, so the safety profile is covered. The description adds useful operational context: bearer auth, retry, status-envelope check, and pagination hint are automatic. It does not mention permission requirements or the confirm gate, though the schema documents confirm.

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 compact sentences with no waste. The escape-hatch purpose is front-loaded, followed immediately by the automatic handling details.

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

Completeness4/5

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

For an open-world, destructive raw API tool, it covers purpose, usage condition, and automatic auth/retry/pagination behavior. The schema covers the destructive confirm parameter, though an explicit warning about write operations and permissions 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 coverage is 100%, with method, path, query, body, and confirm all documented in the schema. The description only restates path/method at a high level and adds no syntax, constraints, or examples beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific raw-request capability: executes ANY HTTP method against SNIPEIT_API_BASE{path}. The 'generic escape hatch' framing clearly distinguishes it from the many dedicated snipeit_* siblings.

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?

Explicitly says 'Use when no dedicated tool exists,' giving a clear routing condition. It stops short of naming alternatives or warning against using it when a dedicated destructive operation tool exists.

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

snipeit_search_hardwareSearch hardware by free textC
Read-onlyIdempotent

Convenience: GET /hardware?search={query}.

NameRequiredDescriptionDefault
allNoIf true, auto-paginate up to 10,000 rows or until the result size cap; if the cap is hit the result has truncated: true and next_offset to continue with limit/offset
limitNo
queryYes
offsetNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world, so the safety profile is covered. The description adds nothing beyond restating the endpoint: no note on search semantics, result caps, or pagination interaction with the `all` parameter, which is the only real behavioral risk here.

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?

It is extremely short and front-loaded, with no wasted words, but the brevity comes at the cost of under-specification rather than efficiency. The single fragment does not earn much on its own.

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 four parameters, low schema coverage, no output schema, and a very dense sibling namespace, the description is far too thin. An agent cannot tell how results are shaped, whether they are paginated, or how this differs from related hardware lookup tools.

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 25% — only `all` is documented, while `query`, `limit`, and `offset` have no schema descriptions. The description says nothing about what `query` matches, acceptable `limit` values, or offset behavior, so 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.

Purpose3/5

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

The description names the HTTP endpoint GET /hardware?search={query}, which combined with the title 'Search hardware by free text' conveys a search operation over hardware. However, it doesn't state what fields are searched or what is returned, and it does not distinguish this from siblings like snipeit_list_hardware, snipeit_get_hardware_by_serial, or snipeit_get_hardware_by_tag beyond the 'free text' hint.

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 single word 'Convenience' weakly implies this is a shortcut over snipeit_raw_request, but there is no explicit when-to-use guidance and no exclusions. With over 150 siblings including several hardware-lookup tools, an agent gets no routing guidance.

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

snipeit_update_hardwareUpdate hardware (partial)C
DestructiveIdempotent

PATCH /hardware/{id}: partial update.

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoRequired when SNIPEIT_CONFIRM_WRITES=true. Exact string "YES" to apply this write.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered externally and there is no contradiction. The description adds nothing on top of that: it never mentions that omitted fields are preserved, that a 'confirm: YES' string may be required when SNIPEIT_CONFIRM_WRITES is set, or what the destructive aspect actually affects.

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 front-loaded and free of padding, but at two fragments it is under-specified rather than concise. The brevity is a symptom of missing content, not economy of expression.

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 destructive, open-world mutation tool with a free-form nested body, no output schema, and a conditional confirm parameter, the description omits nearly everything an agent needs. Only the annotations carry the risk profile; the mechanics of a correct call are undocumented.

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 33% and the critical 'body' parameter is an open object with additionalProperties: {} and no enumerated fields, so the schema gives the agent zero help on what to send. The description does nothing to compensate — it never names a single updatable hardware field, so the agent must guess the payload shape entirely.

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

Purpose3/5

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

The description names the verb and resource via the HTTP path (PATCH /hardware/{id}) and adds the qualifier 'partial update', which does distinguish it from a full-update sibling. However, it is essentially a restatement of the endpoint and title rather than a statement of intent, and it never says what 'hardware' means in this system or which fields are updatable.

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 choose this over snipeit_gen_hardware_update (full update), snipeit_gen_hardware_partial_update, or snipeit_raw_request. 'Partial update' hints at a use case but the agent is left to infer the selection rule and any prerequisites.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 183 tool updatesv0.2.2
    • First observedsnipeit_audit_hardware
    • First observedsnipeit_bulk_checkout
    • First observedsnipeit_checkin_accessory
    • First observedsnipeit_checkin_component
    • First observedsnipeit_checkin_hardware
    • First observedsnipeit_checkout_accessory
    • First observedsnipeit_checkout_component
    • First observedsnipeit_checkout_consumable
    • First observedsnipeit_checkout_hardware
    • First observedsnipeit_checkout_license_seat
    • First observedsnipeit_create_hardware
    • First observedsnipeit_create_maintenance
    • First observedsnipeit_delete_hardware
    • First observedsnipeit_gen_accessories
    • First observedsnipeit_gen_accessories_1
    • First observedsnipeit_gen_accessories_checkin
    • First observedsnipeit_gen_accessories_checkout
    • First observedsnipeit_gen_accessoriesid
    • First observedsnipeit_gen_accessoriesid_1
    • First observedsnipeit_gen_accessoriesid_2
    • First observedsnipeit_gen_accessoriesid_3
    • First observedsnipeit_gen_accessoriesidcheckedout
    • First observedsnipeit_gen_backups_1
    • First observedsnipeit_gen_backupsdownloadfile
    • First observedsnipeit_gen_categories_1
    • First observedsnipeit_gen_categories_2
    • First observedsnipeit_gen_categoriesid
    • First observedsnipeit_gen_categoriesid_1
    • First observedsnipeit_gen_categoriesid_2
    • First observedsnipeit_gen_categoriesid_3
    • First observedsnipeit_gen_companies
    • First observedsnipeit_gen_companies_1
    • First observedsnipeit_gen_companiesid
    • First observedsnipeit_gen_companiesid_1
    • First observedsnipeit_gen_companiesid_2
    • First observedsnipeit_gen_companiesid_3
    • First observedsnipeit_gen_components
    • First observedsnipeit_gen_components_1
    • First observedsnipeit_gen_componentsid
    • First observedsnipeit_gen_componentsid_1
    • First observedsnipeit_gen_componentsid_2
    • First observedsnipeit_gen_componentsid_3
    • First observedsnipeit_gen_componentsidassets
    • First observedsnipeit_gen_componentsidcheckin
    • First observedsnipeit_gen_componentsidcheckout
    • First observedsnipeit_gen_consumables
    • First observedsnipeit_gen_consumables_1
    • First observedsnipeit_gen_consumables_2
    • First observedsnipeit_gen_consumablesid
    • First observedsnipeit_gen_consumablesid_1
    • First observedsnipeit_gen_consumablesid_2
    • First observedsnipeit_gen_consumablesidcheckout
    • First observedsnipeit_gen_departments
    • First observedsnipeit_gen_departments_1
    • First observedsnipeit_gen_departments_edit
    • First observedsnipeit_gen_departmentsid
    • First observedsnipeit_gen_departmentsid_1
    • First observedsnipeit_gen_departmentsid_2
    • First observedsnipeit_gen_fields
    • First observedsnipeit_gen_fields_1
    • First observedsnipeit_gen_fields_2
    • First observedsnipeit_gen_fieldsets
    • First observedsnipeit_gen_fieldsetsid
    • First observedsnipeit_gen_fieldsetsid_1
    • First observedsnipeit_gen_fieldsetsid_2
    • First observedsnipeit_gen_fieldsetsidfields
    • First observedsnipeit_gen_fieldsid
    • First observedsnipeit_gen_fieldsid_1
    • First observedsnipeit_gen_fieldsid_2
    • First observedsnipeit_gen_fieldsidassociate
    • First observedsnipeit_gen_fieldsiddisassociate
    • First observedsnipeit_gen_get_new_endpoint
    • First observedsnipeit_gen_get_new_endpoint_consumables_id_user
    • First observedsnipeit_gen_groups_1
    • First observedsnipeit_gen_groupsid
    • First observedsnipeit_gen_groupsid_1
    • First observedsnipeit_gen_groupsid_2
    • First observedsnipeit_gen_groupsid_3
    • First observedsnipeit_gen_groupsid_4
    • First observedsnipeit_gen_hardware_by_asset_tag
    • First observedsnipeit_gen_hardware_by_id
    • First observedsnipeit_gen_hardware_by_serial
    • First observedsnipeit_gen_hardware_checkin
    • First observedsnipeit_gen_hardware_checkout
    • First observedsnipeit_gen_hardware_create
    • First observedsnipeit_gen_hardware_delete
    • First observedsnipeit_gen_hardware_files_delete
    • First observedsnipeit_gen_hardware_list
    • First observedsnipeit_gen_hardware_list_files
    • First observedsnipeit_gen_hardware_partial_update
    • First observedsnipeit_gen_hardware_update
    • First observedsnipeit_gen_hardware_upload_files
    • First observedsnipeit_gen_hardwareaudit
    • First observedsnipeit_gen_hardwareauditdue
    • First observedsnipeit_gen_hardwareauditoverdue
    • First observedsnipeit_gen_hardwareidfilesfile_id
    • First observedsnipeit_gen_hardwareidlicenses
    • First observedsnipeit_gen_hardwareidrestore
    • First observedsnipeit_gen_licenses
    • First observedsnipeit_gen_licensesid
    • First observedsnipeit_gen_licensesid_1
    • First observedsnipeit_gen_licensesid_2
    • First observedsnipeit_gen_licensesid_3
    • First observedsnipeit_gen_licensesidseats
    • First observedsnipeit_gen_licensesidseatsseat_id
    • First observedsnipeit_gen_licensesidseatsseat_id_2
    • First observedsnipeit_gen_locations
    • First observedsnipeit_gen_locations_1
    • First observedsnipeit_gen_locations_2
    • First observedsnipeit_gen_locations_3
    • First observedsnipeit_gen_locationsid
    • First observedsnipeit_gen_locationsid_2
    • First observedsnipeit_gen_maintenances
    • First observedsnipeit_gen_maintenances_1
    • First observedsnipeit_gen_maintenances_copy
    • First observedsnipeit_gen_maintenances_copy_1
    • First observedsnipeit_gen_maintenancesid
    • First observedsnipeit_gen_manufacturers
    • First observedsnipeit_gen_manufacturers_1
    • First observedsnipeit_gen_manufacturersid
    • First observedsnipeit_gen_manufacturersid_1
    • First observedsnipeit_gen_manufacturersid_2
    • First observedsnipeit_gen_manufacturersid_3
    • First observedsnipeit_gen_models
    • First observedsnipeit_gen_models_1
    • First observedsnipeit_gen_models_files_list
    • First observedsnipeit_gen_modelsid
    • First observedsnipeit_gen_modelsid_1
    • First observedsnipeit_gen_modelsid_2
    • First observedsnipeit_gen_modelsid_3
    • First observedsnipeit_gen_modelsidfiles
    • First observedsnipeit_gen_modelsidfilesfile_id
    • First observedsnipeit_gen_post_auditid
    • First observedsnipeit_gen_put_licensesidseatsseat_id
    • First observedsnipeit_gen_reportsactivity
    • First observedsnipeit_gen_statuslabels
    • First observedsnipeit_gen_statuslabels_1
    • First observedsnipeit_gen_statuslabelsid
    • First observedsnipeit_gen_statuslabelsid_1
    • First observedsnipeit_gen_statuslabelsid_2
    • First observedsnipeit_gen_statuslabelsid_3
    • First observedsnipeit_gen_statuslabelsidassetlist
    • First observedsnipeit_gen_suppliers
    • First observedsnipeit_gen_suppliersid
    • First observedsnipeit_gen_testinput
    • First observedsnipeit_gen_update_fields
    • First observedsnipeit_gen_users
    • First observedsnipeit_gen_users_2
    • First observedsnipeit_gen_users_3
    • First observedsnipeit_gen_users_restore
    • First observedsnipeit_gen_usersid
    • First observedsnipeit_gen_usersid_1
    • First observedsnipeit_gen_usersid_2
    • First observedsnipeit_gen_usersidaccessories
    • First observedsnipeit_gen_usersidassets
    • First observedsnipeit_gen_usersideulas
    • First observedsnipeit_gen_usersidlicenses
    • First observedsnipeit_gen_usersme
    • First observedsnipeit_get_hardware_by_id
    • First observedsnipeit_get_hardware_by_serial
    • First observedsnipeit_get_hardware_by_tag
    • First observedsnipeit_get_license_seats
    • First observedsnipeit_get_location
    • First observedsnipeit_get_statuslabel_assets
    • First observedsnipeit_get_user
    • First observedsnipeit_get_user_accessories
    • First observedsnipeit_get_user_assets
    • First observedsnipeit_get_user_licenses
    • First observedsnipeit_list_accessories
    • First observedsnipeit_list_audit_due
    • First observedsnipeit_list_audit_overdue
    • First observedsnipeit_list_components
    • First observedsnipeit_list_consumables
    • First observedsnipeit_list_hardware
    • First observedsnipeit_list_licenses
    • First observedsnipeit_list_locations
    • First observedsnipeit_list_maintenances
    • First observedsnipeit_list_statuslabels
    • First observedsnipeit_list_users
    • First observedsnipeit_me
    • First observedsnipeit_raw_request
    • First observedsnipeit_search_hardware
    • First observedsnipeit_update_hardware

TDQS

D1.9/5.0

Scored across 183 tools

Disambiguation1/5

The surface is dominated by duplicate coverage of the same endpoints: list_hardware vs gen_hardware_list, create_hardware vs gen_hardware_create, checkout_hardware vs gen_hardware_checkout, plus raw_request as a universal escape hatch. Agents cannot reliably choose between semantic tools and generated tools, and many gen_* names differ only by opaque suffixes.

Naming Consistency2/5

There are two competing naming schemes: readable semantic names like snipeit_list_hardware and generated names like snipeit_gen_hardware_list and snipeit_gen_fieldsid_3. The generated names use inconsistent numeric suffixes and tangled operation names, making verb/noun intent unpredictable despite staying in snake_case.

Tool Count1/5

183 tools is far beyond a reasonable scoped surface for this server, especially because many tools are near-duplicates of the same endpoint. The count creates overwhelming selection noise rather than adding useful capability.

Completeness2/5

Broad Snipe-IT resources are represented, but the surface has severe redundancy, broken/incomplete tools such as file uploads that explicitly do not work, and odd generated endpoints. Coverage is technically wide but operationally unreliable and hard to navigate.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server providing token-efficient access to OpenAPI/Swagger specs via MCP Resources for client-side exploration.
    342 npm
    76
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for SolarWinds Service Desk (SWSD/Samanage) enabling reading and modifying tickets, comments, knowledge-base articles, and more via each user's own API token.
    51
    445 npm
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for the Snipe-IT asset management REST API, enabling read and write operations on assets, licenses, accessories, and more.
    13
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    MCP server for JumpCloud APIs with full OpenAPI-driven coverage, enabling endpoint discovery, operation invocation, and direct API requests while managing multi-tenant user tokens in Vault and guarding mutating tools.
    20
    MIT