Skip to main content
Glama
chiku-wa

snipeit-mcp

by chiku-wa

🔧 Snipe-IT MCP

CodexやClaudeに日本語でお願いするだけで、Snipe-ITの資産やライセンスを確認・登録できるようにするプログラムです。

たとえば「未使用のPCを一覧にして」「このライセンスを資産へ割り当てて」のように操作できます。

🚀 最初にお読みください

セットアップは、大きく分けて次の3段階です。上から順番に進めれば大丈夫です。

段階

やること

対象の手順

① 共通準備

PythonとAPIトークンを準備する

手順1〜5

② アプリを選ぶ

CodexまたはClaudeへ登録する

手順6

③ 使ってみる

資産やライセンスを操作する

手順7〜9

💡 CodexとClaudeの両方を設定する必要はありません。 手順6で、普段使う方だけを選んでください。

🧑‍💻 macOS・Linuxではターミナル(Bash/Zsh)、WindowsではPowerShellを使います。OS別のコードブロックから該当するものを実行してください。

このREADMEはmacOS、Red Hat Enterprise Linuxを含む一般的なLinux(Bash/Zsh)、Windows PowerShellの手順を掲載しています。LinuxではPython 3.11以上が利用できれば、ディストリビューション固有の違いは主にPythonのインストール方法だけです。

📖 このREADMEに出てくる言葉

言葉

かんたんな意味

MCP

CodexやClaudeと、外部サービスをつなぐ仕組み

APIトークン

Snipe-ITへ安全に接続するための長いパスワード

ターミナル

macOS・Linuxで文字によるコマンドを入力するアプリ

PowerShell

Windowsでコマンドを入力するアプリ

Python仮想環境

このプログラム専用のPython実行場所

リポジトリ

このプログラム一式が入っているフォルダ

Related MCP server: invgate-mcp

✨ できること

  • Snipe-IT APIへの接続確認

  • 資産の一覧、検索、詳細取得、登録

  • ライセンスの一覧、検索、詳細取得、登録

  • ライセンスシートの一覧、資産への自動・明示割り当てと解除

  • ユーザーの一覧、検索、詳細取得

  • 資産モデル、カテゴリ、ロケーションの一覧と検索

ℹ️ 既存データの更新・削除には対応していません。

各一覧ツールは、limitに100を超える件数を指定できます。limitを省略すると25件、limit=nullを指定すると全件を内部でページングして取得します。ライセンスシート一覧は常に全件取得します。取得予定が500件を超える場合、MCPは一覧を返す前に警告し、AIへ利用者の明示的な確認を求めます。同意後にAIがconfirm_large_result=trueで再実行すると取得されます。警告の閾値はSNIPEIT_LARGE_RESULT_THRESHOLD環境変数で変更できます。

1. ✅ 必要なものを確認する

次のものが必要です。

  • Python 3.11以上(Windowsではインストール時にPATHへ追加)

  • Codex CLIまたはClaude Code(Claude Desktopは別途DXTパッケージ化が必要)

  • 接続可能なSnipe-IT v7サーバー

  • Snipe-ITのPersonal Access Token

  • 資産やライセンスを登録・割り当てする場合は、対応する書き込み権限

macOS・Linuxではターミナルを開き、次のコマンドを実行します。

python3 --version
codex --version
claude --version

WindowsではPowerShellを開き、次を実行します。

python --version
codex --version
claude --version

💡 codex --versionclaude --version は、利用する方だけ成功すれば問題ありません。使わない方でエラーが出ても無視できます。

python3 --version の結果が Python 3.11 以上なら準備完了です。3.10以下の場合は、先にPython 3.11以上をインストールしてください。

2. 🔑 Snipe-ITでAPIトークンを作成する

  1. Snipe-ITへログインします。

  2. 画面右上のアカウントメニューを開きます。

  3. Manage API Keys を選びます。

  4. Create New Token を選び、用途が分かる名前を付けて作成します。

  5. 表示されたトークンを一時的に安全な場所へコピーします。

⚠️ 重要: トークンは再表示できない場合があります。ただし、チャット、ソースコード、.env、Gitの履歴には貼り付けないでください。次の手順5で安全なファイルへ保存します。

APIトークンの権限は、トークンを作成したSnipe-ITユーザーの権限を引き継ぎます。参照だけなら閲覧権限、資産・ライセンスの登録や割り当てには、それぞれを操作できる権限が必要です。必要以上に強い権限を与えず、専用ユーザーを用意することを推奨します。

3. 📁 プロジェクトのフォルダへ移動する

このプログラムが入っているフォルダへ移動します。以下は配置場所の例です。

macOS・Linux(Bash/Zsh):

cd "$HOME/Tech/CodeXWorkSpace/snipeit-mcp"

Windows(PowerShell):

Set-Location "$HOME\Tech\CodeXWorkSpace\snipeit-mcp"

READMEとPythonプロジェクトが見えることを確認します。

test -f pyproject.toml && echo "プロジェクトを確認できました"

PowerShellでは次を実行します。

Test-Path pyproject.toml

macOS・Linuxでプロジェクトを確認できました、PowerShellでTrueと表示されれば成功です。そうでない場合は、移動先を確認してください。

4. 🐍 Python環境を準備する

手順3から続けて実行します。処理に数分かかることがあります。

macOS・Linux(Bash/Zsh):

python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install -e '.[dev]'

Windows(PowerShell):

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"

インストール後、テストを実行します。

.venv/bin/pytest

PowerShellでは次を実行します。

.\.venv\Scripts\pytest.exe

最後に passed と表示され、failed がなければ成功です。failed が表示された場合は、先へ進まず「🆘 トラブルシューティング」を確認してください。

5. 🔐 APIトークンを安全に保存する

このMCPは、APIトークンを環境変数へ直接書く代わりに、利用者だけが読めるファイルから読み込めます。

実行途中で Snipe-IT API token: と表示されます。手順2で作成したトークンを貼り付け、Enterを押してください。

🙈 入力中は、セキュリティのため文字も * も表示されません。画面が動かなくても入力されています。

mkdir -p "$HOME/.config/snipeit-mcp"
chmod 700 "$HOME/.config/snipeit-mcp"
printf 'Snipe-IT API token: '
read -r -s SNIPEIT_TOKEN
printf '\n'
printf '%s\n' "$SNIPEIT_TOKEN" > "$HOME/.config/snipeit-mcp/token"
unset SNIPEIT_TOKEN
chmod 600 "$HOME/.config/snipeit-mcp/token"

ファイルの権限が 600 であることを確認します。

ls -l "$HOME/.config/snipeit-mcp/token"

表示の先頭が -rw------- なら成功です。それ以外の場合、このMCPは安全のため起動しません。

Windows(PowerShell)では、次を実行します。WindowsではchmodではなくACLで、現在の利用者だけがトークンファイルを読めるようにします。

$TokenDir = Join-Path $HOME ".config\snipeit-mcp"
$TokenFile = Join-Path $TokenDir "token"
New-Item -ItemType Directory -Force -Path $TokenDir | Out-Null
$SecureToken = Read-Host "Snipe-IT API token" -AsSecureString
$PlainToken = [System.Net.NetworkCredential]::new("", $SecureToken).Password
[System.IO.File]::WriteAllText($TokenFile, $PlainToken)
$PlainToken = $null
$SecureToken.Dispose()
icacls $TokenFile /inheritance:r /grant:r "${env:USERNAME}:(R)"

Successfully processed 1 filesと表示されれば保存完了です。WindowsではPythonからACLの安全性を判定できないため、上のicaclsを省略しないでください。

6. 🤖 CodexまたはClaudeを選ぶ

普段使うアプリに合う方だけを選んでください。

使いたいアプリ

進む場所

Codex

「🅰️ Codex」を実施

Claude Code

「🅱️ Claude」→「B-1」を実施

Claude Desktop

「🅱️ Claude」→「B-2」で現在の制約を確認

CodexとClaudeの両方

AとBの両方を実施

🅰️ Codex

A-1. 🔗 MCPサーバーを登録する

まず、このリポジトリの絶対パスを変数へ保存します。

SNIPEIT_MCP_DIR="$(pwd -P)"

次のコマンド内にある http://192.168.186.128 だけを、自分のSnipe-ITのURLへ置き換えて実行します。URLの末尾に /api/v1 は付けません。

codex mcp add snipeit \
  --env SNIPEIT_URL=http://192.168.186.128 \
  --env SNIPEIT_API_TOKEN_FILE="$HOME/.config/snipeit-mcp/token" \
  --env SNIPEIT_TIMEOUT=20 \
  --env SNIPEIT_LARGE_RESULT_THRESHOLD=500 \
  -- \
  "$SNIPEIT_MCP_DIR/.venv/bin/snipeit-mcp"

HTTPSで公開している場合の例は次のとおりです。

codex mcp add snipeit \
  --env SNIPEIT_URL=https://snipeit.example.com \
  --env SNIPEIT_API_TOKEN_FILE="$HOME/.config/snipeit-mcp/token" \
  --env SNIPEIT_TIMEOUT=20 \
  --env SNIPEIT_LARGE_RESULT_THRESHOLD=500 \
  -- \
  "$SNIPEIT_MCP_DIR/.venv/bin/snipeit-mcp"

⚠️ HTTP版とHTTPS版は、どちらか一方だけを実行してください。

Windows(PowerShell)では次を実行します。URLは自分の環境に置き換えてください。

$SnipeItMcpDir = (Resolve-Path ".").Path
$SnipeItTokenFile = Join-Path $HOME ".config\snipeit-mcp\token"
codex mcp add snipeit `
  --env "SNIPEIT_URL=https://snipeit.example.com" `
  --env "SNIPEIT_API_TOKEN_FILE=$SnipeItTokenFile" `
  --env "SNIPEIT_TIMEOUT=20" `
  --env "SNIPEIT_LARGE_RESULT_THRESHOLD=500" `
  -- `
  "$SnipeItMcpDir\.venv\Scripts\snipeit-mcp.exe"

A-2. 🔍 登録状態を確認する

codex mcp list

一覧にsnipeitが表示されることを確認します。macOS・Linuxではコマンド末尾が.venv/bin/snipeit-mcp、Windowsでは.venv\Scripts\snipeit-mcp.exeになります。

A-3. 🎉 Codexを再起動して接続確認する

MCPツールの一覧は、すでに開いているCodexセッションへ自動では追加されません。CodexアプリまたはCodex CLIを終了して起動し直し、新しいタスクを開いてください。

新しいタスクで、次のように依頼します。

Snipe-IT MCPの接続を確認して。

続けて、読み取り確認を行います。

Snipe-IT MCPを使って資産を10件取得して。

接続結果と資産一覧が返れば、Codexのセットアップは完了です。🎉

🅱️ Claude

このMCPは標準のstdioトランスポートを使用しているため、Pythonコードを変更せずClaude Codeで利用できます。Claude DesktopについてはB-2の制約を確認してください。

B-1. 💻 Claude Codeへ登録する

プロジェクト直下で、絶対パスを変数へ保存します。

SNIPEIT_MCP_DIR="$(pwd -P)"

次のコマンド内にある http://192.168.186.128 だけを、自分のSnipe-ITのURLへ置き換えて実行します。--scope user により、すべてのClaude Codeプロジェクトから利用できます。

claude mcp add \
  --env SNIPEIT_URL=http://192.168.186.128 \
  --env SNIPEIT_API_TOKEN_FILE="$HOME/.config/snipeit-mcp/token" \
  --env SNIPEIT_TIMEOUT=20 \
  --env SNIPEIT_LARGE_RESULT_THRESHOLD=500 \
  --transport stdio \
  --scope user \
  snipeit -- \
  "$SNIPEIT_MCP_DIR/.venv/bin/snipeit-mcp"

HTTPSで公開している場合は、SNIPEIT_URLhttps://snipeit.example.com のように変更します。URL末尾に /api/v1 は付けません。

Windows(PowerShell)では次を実行します。URLは自分の環境に置き換えてください。

$SnipeItMcpDir = (Resolve-Path ".").Path
$SnipeItTokenFile = Join-Path $HOME ".config\snipeit-mcp\token"
claude mcp add `
  --env "SNIPEIT_URL=https://snipeit.example.com" `
  --env "SNIPEIT_API_TOKEN_FILE=$SnipeItTokenFile" `
  --env "SNIPEIT_TIMEOUT=20" `
  --env "SNIPEIT_LARGE_RESULT_THRESHOLD=500" `
  --transport stdio `
  --scope user `
  snipeit -- `
  "$SnipeItMcpDir\.venv\Scripts\snipeit-mcp.exe"

登録状態を確認します。

claude mcp list
claude mcp get snipeit

Claude Codeを起動し、/mcp でも接続状態を確認できます。新しい会話で次のように依頼してください。

Snipe-IT MCPの接続を確認して。

接続結果が返れば、Claude Codeのセットアップは完了です。🎉

B-2. 🖥️ Claude Desktopについて

現時点のリポジトリには、Claude Desktopへ直接インストールできるDXTパッケージやmanifest.jsonが含まれていません。そのため、このREADMEだけではClaude Desktopへの登録を完了できません。現在サポートしている手順はCodexとClaude Codeです。

Claude Desktopで利用する場合は、別途DXTパッケージ化が必要です。パッケージを用意した後、Claude Desktopの SettingsExtensions からインストールしてください。

ローカルMCPとPython製DXTはClaude Desktopでサポートされています。詳細はAnthropicのローカルMCP公式手順を参照してください。

Claude CodeのMCPコマンドとスコープについてはClaude Code MCP公式ドキュメントを参照してください。

7. 💻 資産を登録する

資産登録には、少なくとも次の値が必要です。

  • asset_tag: Snipe-IT内で一意の資産タグ

  • model_id: 登録済み資産モデルのID

  • status_id: 登録済みステータスラベルのID

まずモデルを確認します。

Snipe-ITの資産モデルを一覧表示して。

ステータスIDはSnipe-IT管理画面で確認し、次のように登録を依頼します。

Snipe-ITに次の資産を登録して。
asset_tag: PC-001
model_id: 3
status_id: 2
name: 営業用ノートPC
serial: ABC123456

利用できる任意項目は nameserialpurchase_datepurchase_costnoteslocation_id です。日付は YYYY-MM-DD 形式で指定してください。

8. 📄 ライセンスを登録する

ライセンス登録には、少なくとも次の値が必要です。

  • name: ライセンス名

  • seats: 購入したシート数

  • category_id: ライセンス用カテゴリのID

カテゴリを確認してから登録します。

Snipe-ITのカテゴリを一覧表示して。
Snipe-ITに次のライセンスを登録して。
name: Example Software Business
seats: 10
category_id: 4
serial: XXXXX-XXXXX-XXXXX
expiration_date: 2027-03-31

利用できる任意項目は serialpurchase_datepurchase_costexpiration_datenotesmanufacturer_id です。

9. 🔗 ライセンスを資産へ割り当てる

Snipe-ITでは、ライセンスそのものではなく、ライセンス内の個別シートを資産へ割り当てます。通常は、空いている中で最も小さいSeat番号をMCPが自動選択するツールを使用してください。

Snipe-ITで、ライセンスID 5の最も小さい番号の空きシートを資産ID 8へ割り当てて。
メモは「営業用PCへ割り当て」。

自動割り当ては全ページのシートを取得し、ライセンス内のSeat番号順に空席を選びます。同一MCPプロセス内ではライセンス単位で処理を直列化し、同時実行による同じ空席の選択を防ぎます。

💡 通常は上の自動割り当てを使ってください。空いている中で最も小さいSeat番号が自動で選ばれます。

Seat IDを自分で指定する方法は上級者向けです。明示指定には次の3つのIDが必要です。

  • license_id: ライセンスID

  • seat_id: ライセンス内のシートID

  • asset_id: 割り当て先の資産ID

Seat IDを明示する場合は、まずライセンス、シート、資産を確認します。

Snipe-ITのライセンスを一覧表示して。
ライセンスID 5の空きシートをSeat番号順で取得して。
資産タグ PC-001を検索して、資産IDを確認して。

IDを確認できたら割り当てます。

Snipe-ITで、ライセンスID 5のシートID 12を資産ID 8へ割り当てて。
メモは「営業用PCへ割り当て」。

割り当て解除は次のように依頼します。

Snipe-ITで、ライセンスID 5のシートID 12の割り当てを解除して。

Snipe-ITのAPIで指定するSeat IDは全ライセンスを通じた一意なIDで、画面上のSeat番号とは異なる場合があります。たとえば、画面上のSeat 1がAPIではSeat ID 101になることがあります。自動割り当てツールはこの違いを内部で処理します。

⚙️ 設定を変更する

このMCPは.envを自動では読み込みません。実際の値は手順6のMCP登録コマンドで環境変数として渡します。利用できる設定項目は次の表のとおりです。

環境変数

必須

内容

既定値

SNIPEIT_URL

必須

Snipe-ITのベースURL

なし

SNIPEIT_API_TOKEN_FILE

どちらか必須

権限600のトークンファイル

なし

SNIPEIT_API_TOKEN

どちらか必須

トークンを直接指定

なし

SNIPEIT_TIMEOUT

任意

APIリクエストのタイムアウト秒数

20

SNIPEIT_LARGE_RESULT_THRESHOLD

任意

大量取得前に確認を求める件数

500

セキュリティ上、トークンの直接指定よりSNIPEIT_API_TOKEN_FILEを推奨します。

Snipe-ITのURLやプロジェクトの場所を変更した場合は、利用しているクライアントから一度登録を削除して再登録します。

Codexの場合:

codex mcp remove snipeit

Claude Codeの場合:

claude mcp remove snipeit

その後、「6. CodexまたはClaudeを選ぶ」から該当する登録手順を新しい値で再実行し、利用しているクライアントを再起動してください。

APIトークンだけを更新する場合は、登録し直す必要はありません。「5. APIトークンを安全なファイルへ保存する」を新しいトークンで再実行し、利用しているクライアントを再起動してください。

🗑️ アンインストール

利用しているクライアントから登録を削除します。

Codexの場合:

codex mcp remove snipeit

Claude Codeの場合:

claude mcp remove snipeit

Claude Desktopの場合は、SettingsExtensions から対象のExtensionをアンインストールします。

不要になったトークンはSnipe-ITの Manage API Keys から失効させてください。その後、ローカルのトークンファイルを削除できます。

rm "$HOME/.config/snipeit-mcp/token"

PowerShellでは次を実行します。

Remove-Item (Join-Path $HOME ".config\snipeit-mcp\token")

🆘 トラブルシューティング

SNIPEIT_URL is required

利用しているクライアントのMCP登録に SNIPEIT_URL が含まれていません。「設定を変更する」の手順で削除し、URLを指定して再登録してください。

SNIPEIT_API_TOKEN or SNIPEIT_API_TOKEN_FILE is required

トークンファイルの指定が登録されていません。「5. APIトークンを安全に保存する」と「6. CodexまたはClaudeを選ぶ」の該当手順を確認してください。

SNIPEIT_API_TOKEN_FILE cannot be read

ファイルが存在するか、登録時に絶対パスが保存されているか確認します。

ls -l "$HOME/.config/snipeit-mcp/token"

PowerShellでは次を実行します。

Test-Path (Join-Path $HOME ".config\snipeit-mcp\token")

利用しているクライアントに応じて登録状態を確認します。

codex mcp list
claude mcp list

SNIPEIT_API_TOKEN_FILE permissions must be 600(macOS・Linux)

トークンファイルの権限を修正します。

chmod 600 "$HOME/.config/snipeit-mcp/token"

WindowsではACLを設定し直します。

$TokenFile = Join-Path $HOME ".config\snipeit-mcp\token"
icacls $TokenFile /inheritance:r /grant:r "${env:USERNAME}:(R)"

Snipe-IT API returned HTTP 401

トークンが間違っている、失効している、または対象操作の権限がありません。Snipe-ITでトークンと、そのトークンを作成したユーザーの権限を確認してください。

Could not connect to the Snipe-IT API

URL、ネットワーク、VPN、DNS、ファイアウォールを確認します。SNIPEIT_URL にはブラウザでSnipe-ITを開く際のベースURLを指定し、/api/v1 は付けません。

MCPを変更したのに新しいツールが見えない

このプロジェクトは編集可能モードでインストールされるため、通常は再インストール不要です。ただし、起動中のMCPプロセスは古いコードを保持しています。Codex、Claude Code、Claude Desktopのうち利用しているクライアントを終了して起動し直し、新しい会話を開いてください。

🧪 開発者向けテスト

cd "$HOME/Tech/CodeXWorkSpace/snipeit-mcp"
.venv/bin/pytest

Windows(PowerShell):

Set-Location "$HOME\Tech\CodeXWorkSpace\snipeit-mcp"
.\.venv\Scripts\pytest.exe

🛡️ セキュリティ上の注意

  • APIトークンをGitへコミットしないでください。

  • APIトークンをAIクライアントのプロンプトへ貼り付けないでください。

  • .envやトークンファイルをこのリポジトリへ置かないでください。

  • トークンには必要最小限の権限だけを付与してください。

  • 不要になったトークンはSnipe-IT側で失効させてください。

📜 ライセンス

MIT

Available Tools

16 tools
assign_license_seat_to_assetA

最も小さいSeat番号の空きシートを自動選択し、資産へ割り当てます。

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
asset_idYes
license_idYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It reveals the algorithmic behavior of selecting the smallest available seat, which is useful. However, it does not disclose edge cases such as what happens when no seats are available, whether existing assignments are overwritten, 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?

The description is a single, concise sentence that is front-loaded with the core behavior. It contains no unnecessary words and is easy to parse.

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

Completeness2/5

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

For a mutation tool with no output schema, the description does not explain return values, error conditions, or prerequisites. It covers the core assignment logic but leaves out important contextual details that an agent would need to handle failures or verify success.

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 does not explain the parameters' meanings beyond their names. It mentions asset and seat but does not clarify the role of license_id or the optional note parameter. This is insufficient compensation for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states the tool's purpose: it automatically selects the available seat with the smallest seat number and assigns it to an asset. This specific behavior distinguishes it from the sibling tool assign_specific_license_seat_to_asset, which requires specifying a particular seat.

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

Usage Guidelines3/5

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

The description implies when to use this tool (when you want automatic seat selection) but does not explicitly mention the alternative of assigning a specific seat or provide exclusions. The sibling name hints at the alternative, but the description itself lacks explicit usage guidance.

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

assign_specific_license_seat_to_assetA

明示指定された一意なSeat IDを資産へ割り当てます。通常は自動選択ツールを使用してください。

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
seat_idYes
asset_idYes
license_idYes

TDQS

A3.7/5.0
Behavior2/5

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

There are no annotations provided, so the description carries the full burden for behavioral disclosure. The description only states the action and the norm to use the auto-select tool, but does not disclose any side effects, prerequisites, error conditions, or required permissions. This is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main action and a clear usage recommendation. Every sentence earns its place without unnecessary filler.

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

Completeness2/5

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

The tool has 4 parameters, no output schema, and no annotations. The description is very brief and omits critical context such as return values, error handling, and prerequisites. Given the mutating nature of the tool, the description is incomplete for safe and 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?

The input schema has 0% description coverage, so the description must explain parameters. It clarifies seat_id (specific) and asset_id (target), but does not explain license_id or note. Since 3 required params are only partially explained, the description does not compensate for the missing parameter details.

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

Purpose5/5

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

The description clearly states it assigns an explicitly specified unique Seat ID to an asset. It distinguishes from the automatic selection tool by saying '通常は自動選択ツールを使用してください', implying this is for specific seat assignments. This gives a specific verb and resource.

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 states '通常は自動選択ツールを使用してください' (normally use the automatic selection tool), which is a clear recommendation for when not to use this tool. This works as a usage guideline despite not naming the sibling tool.

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

check_connectionA

Snipe-IT APIへの接続と認証を確認します。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden for behavioral disclosure. It states the core behavior (checking connection and authentication), which implies a non-destructive health check. However, it does not specify whether the operation makes network requests, what happens on failure, or whether any authorization is required. This is adequate for a simple check but lacks richer detail.

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

Conciseness5/5

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

The description is a single, concise sentence that squarely addresses the tool's purpose. There is no redundant information, fluff, or irrelevant detail. It is front-loaded and easy to parse.

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

Completeness4/5

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

This is a very simple tool with zero parameters and an output schema. The description sufficiently states the tool's purpose. While it could add a note about typical usage contexts (e.g., 'Use this to verify API credentials before other calls'), that is more of a usage guideline and not strictly necessary for completeness given the tool's simplicity.

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 has zero parameters, so there is no parameter semantics to clarify. The schema already covers this with 100% coverage (trivially). The description adds nothing about parameters because none exist, which aligns with the baseline of 4 for zero-parameter tools.

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

Purpose5/5

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

The description clearly states the tool's function: 'Check the connection and authentication to the Snipe-IT API.' This is a specific verb ('check') with a resource ('connection and authentication to the Snipe-IT API'), and it clearly distinguishes itself from sibling tools that focus on CRUD operations for assets, licenses, users, etc.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, typical scenarios (e.g., troubleshooting connectivity before making other API calls), or any exclusions. The only context is the tool name itself, but no explicit usage advice is given.

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

create_assetC

資産を登録します。asset_tag、model_id、status_idは必須です。

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
notesNo
serialNo
model_idYes
asset_tagYes
status_idYes
location_idNo
purchase_costNo
purchase_dateNo

TDQS

C2.4/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'register an asset' and lists required fields, which simply repeats schema information. It does not mention side effects, permissions, failure modes, or return values.

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

Conciseness5/5

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

The description is a single short sentence in Japanese, which is concise and front-loaded. It contains no unnecessary words or repetition.

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

Completeness1/5

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

Given the absence of annotations, output schema, and parameter explanations, the description is severely underspecified for a tool with 9 parameters. It fails to provide enough context for an agent to use the tool correctly or anticipate its behavior.

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

Parameters1/5

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

The schema has 9 parameters with 0% coverage from the description. The description only echoes the three required parameters without explaining their meaning or providing context for optional fields like purchase_cost or location_id. This does not compensate for the missing schema descriptions.

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

Purpose4/5

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

The description clearly states the tool 'registers an asset' (資産を登録します), which is a specific verb and resource. It does not explicitly differentiate from sibling create tools like create_license, but the asset focus is clear from 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?

No guidance is provided on when to use this tool versus alternatives, such as creating a license or updating an asset. The only hint is the tool name and the required fields, which are already visible in the schema.

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

create_licenseC

ライセンスを登録します。name、seats、category_idは必須です。

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
notesNo
seatsYes
serialNo
category_idYes
purchase_costNo
purchase_dateNo
expiration_dateNo
manufacturer_idNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It only says 'registers a license' and lists required fields. It does not disclose side effects like record creation into a persistent store, potential validation errors, or whether the operation is idempotent. No return value or failure behavior is mentioned.

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

Conciseness5/5

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

The description is extremely concise: two short sentences. It gets straight to the point and repeats no fluff. The required-field note is front-loaded and useful, and every word earns 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?

For a tool with 9 parameters, no output schema, and no annotations, this description is incomplete. It omits what happens on success (e.g., returns the created license ID), potential error conditions, and any special constraints like uniqueness of name. The schema provides structure but not context about the operation's lifecycle.

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 only repeats that name, seats, and category_id are required, which is already in the schema's required array. It does not explain the meaning of any parameter or touch on the optional fields (notes, serial, purchase_cost, etc.). With schema description coverage at 0%, the description adds minimal semantic value beyond the schema.

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

Purpose5/5

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

The description clearly states 'ライセンスを登録します' (registers a license), which is a specific verb+resource. It also notes the required fields, distinguishing it from license-related read or assignment tools. Purpose is immediately unambiguous.

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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention situations where another tool would be more appropriate, nor does it describe the context for creating a license. Sibling tools like 'assign_license_seat_to_asset' exist, but no distinction is made.

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

get_assetB

IDを指定して資産の詳細を取得します。

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Gets the details' implies a read-only operation, it does not state whether this is safe, what happens if the asset ID does not exist, whether authentication is required, or any rate limits. The description adds no behavioral context beyond the basic action.

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

Conciseness5/5

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

The description is a single, short sentence with no unnecessary words. It front-loads the verb and resource, making it immediately scannable. Ideal conciseness for a simple get operation.

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

Completeness3/5

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

The tool is simple (one parameter, no output schema), and the description states the core operation. However, it lacks any information about return format, error behavior, or field details, which are not covered by schema or annotations. It is minimally adequate but leaves gaps for an agent that needs to interpret results.

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

Parameters2/5

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

The schema has 0% description coverage, so the description must compensate for parameter meaning. It mentions 'ID' generically, but only repeats what is already evident from the property name 'asset_id' and the type integer. It does not explain the ID's format, whether it is a database identifier, or any constraints beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Gets the details') and the resource ('asset') with a specific parameter ('by specifying ID'). It distinguishes from sibling tools like list_assets (lists assets) and get_license/get_user (other get tools) by clearly targeting a single asset 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?

The description provides no guidance on when to use this tool versus alternatives such as list_assets or get_license. It does not mention any prerequisites, exclusions, or scenarios where another tool would be more appropriate. This is a clear gap for a tool with many siblings.

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

get_licenseB

IDを指定してライセンスの詳細を取得します。

ParametersJSON Schema
NameRequiredDescriptionDefault
license_idYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses only the basic action (getting details) and offers no additional behavioral context like error handling, authentication requirements, or return format. There is no mention of what happens if the ID does not exist, which is a gap.

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

Conciseness5/5

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

The description is a single sentence that is direct and free of unnecessary detail. It conveys the essential action and argument efficiently, with no waste.

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 a one-parameter tool, the description is still incomplete. It does not specify what the 'details' encompass, nor does it clarify response structure or error behavior. Given that sibling tools include list_licenses and other license operations, more context would help select and invoke the tool effectively.

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 must compensate. It mentions 'IDを指定して' (specifying an ID), but does not add semantic meaning beyond the schema's 'license_id' integer field. It does not explain that the ID is the unique license identifier, nor does it provide constraints or examples.

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

Purpose5/5

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

The description states 'IDを指定してライセンスの詳細を取得します' which clearly identifies a specific verb ('get') and resource ('license details') with a required parameter (ID). It effectively distinguishes from siblings like list_licenses and get_asset by indicating it retrieves one license.

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 context of sibling tools (e.g., list_licenses for listing, get_license for single retrieval), but the description does not explicitly state when to use this tool over alternatives or provide any exclusionary guidance. It lacks explicit context such as 'use when you have a license ID'.

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

get_userC

IDを指定してユーザーの詳細を取得します。

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only says 'get user details' without disclosing potential side effects, permissions, rate limits, or behavior on missing/invalid IDs. For a read operation, it is minimally transparent but lacks context beyond the obvious.

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

Conciseness4/5

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

The description is one short sentence, immediately front-loaded with the core action and resource. It is appropriately sized for a simple get operation and contains no filler.

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

Completeness3/5

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

Given the low complexity (one parameter, no output schema), the description provides the essential purpose but lacks usage guidance and behavioral context. It is adequate for a trivial get but leaves gaps around when to use and potential error handling.

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 has one required integer parameter 'user_id' with 0% description coverage. The description mentions 'ID' but adds no new meaning beyond what the schema already shows—it does not clarify the expected format, constraints, or how the ID relates to the user. The description merely echoes the schema field.

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 'get' and the resource 'user details', with the ID as the key parameter. It distinguishes from sibling 'list_users' by indicating a specific ID-based retrieval, but does not explicitly name alternatives.

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

Usage Guidelines2/5

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

The description offers no explicit guidance on when to use this tool versus alternatives like list_users. It implies you need an ID, but does not state when this tool is preferred, any prerequisites, or exclusions.

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

list_assetsA

資産を検索・一覧表示します。limitは最大100件です。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It adds a useful constraint that limit is capped at 100 (limitは最大100件です), but it does not disclose return format, pagination behavior beyond offset/limit, or whether the operation is read-only (though 'list' implies this). Some behavioral context is present, but key details are missing.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the tool's primary purpose and the key limit constraint. Every word earns its place, with no irrelevant filler.

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 no output schema and no annotations, the description needs to explain what the tool returns and how search/pagination work. It only mentions the limit cap, leaving offset semantics, search behavior, and return shape undocumented. This is incomplete for a tool with three parameters and no structured output definition.

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 must compensate. It only explains the limit parameter (max 100) and leaves offset and search undefined. This adds partial value for one parameter but fails to clarify pagination offset or what the search parameter searches (e.g., asset name, ID, tags).

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

Purpose5/5

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

The description clearly states the tool searches and lists assets (資産を検索・一覧表示します), which is a specific verb-resource combination. It distinguishes from sibling tools like get_asset (single asset) and list_categories/list_locations (other resource types).

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 from the tool name and sibling context: use this to search/list assets, while get_asset is for a single asset. However, the description does not explicitly state when to use this tool versus alternatives or mention any exclusions, so it stops at implied guidance.

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

list_categoriesB

カテゴリを検索・一覧表示します。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It fails to explain search semantics (e.g., partial matching, case sensitivity), pagination behavior, or confirm that the operation is read-only. The description adds no behavioral context beyond the tool name and action.

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

Conciseness4/5

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

The description is a single concise sentence in Japanese with no redundancy. It is efficiently written, though it could be more informative without sacrificing conciseness.

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

Completeness2/5

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

With no output schema and no annotations, the description must be self-sufficient. A single phrase about searching and listing categories is inadequate for a tool with three parameters, as it omits return format, pagination details, and search behavior.

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 0%, and the description does not explain any of the three parameters (limit, offset, search). It does not compensate for the lack of schema documentation, leaving the agent to rely solely on parameter names and defaults.

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

Purpose5/5

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

The description states 'カテゴリを検索・一覧表示します' which clearly indicates searching and listing categories. It uses a specific verb (search/list) and resource (categories), distinguishing it from sibling list tools like list_assets or list_models based on the resource.

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

Usage Guidelines3/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. The resource 'categories' implies a specific use case, but there is no context about prerequisites, exclusions, or conditions where another tool would be more appropriate.

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

list_licensesC

ライセンスを検索・一覧表示します。limitは最大100件です。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions the limit maximum of 100, which is useful, but does not explain search semantics, pagination behavior, or return format, leaving significant gaps in transparency.

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

Conciseness5/5

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

The description is a single, well-structured sentence that delivers both purpose and a key parameter constraint. It is appropriately sized for a simple list tool with no extraneous 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 list tool with three parameters and no output schema, the description is too sparse. It lacks explanation of offset and search behavior, pagination details, and return value structure, making it insufficient for an agent to fully predict tool 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%, so the description must compensate. It clarifies that 'limit' has a maximum of 100, but 'offset' and 'search' remain undocumented in both schema and description, forcing the agent to guess at their meanings and usage.

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 'Search and list licenses' with a clear verb and resource, effectively distinguishing it from other list tools by targeting licenses specifically. However, it doesn't explicitly differentiate among sibling list tools like list_license_seats, though the resource term 'licenses' provides sufficient 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?

No guidance is provided on when to use this tool versus alternatives such as list_license_seats or list_assets. The description does not mention use cases, prerequisites, or exclusions, leaving the agent to infer appropriate usage entirely from the name and context.

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

list_license_seatsA

ライセンスの全シートをSeat番号順で取得します。空きシートだけにも絞れます。

ParametersJSON Schema
NameRequiredDescriptionDefault
license_idYes
available_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description provides some behavioral context: it returns all seats in a specific order and supports an available-only filter. It does not mention return format, pagination, or any side effects, but as a read operation, the risk is low.

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

Conciseness5/5

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

The description is extremely concise, two sentences, with the primary action and key filter stated front-loaded. No wasted words.

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

Completeness4/5

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

For a simple list tool with only two parameters and an output schema, the description covers the main functionality, ordering, and filtering. It could mention additional details like whether assigned seats are included, but overall it is fairly complete for its complexity.

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 description explicitly explains the available_only parameter (filter to empty seats) and implies the license_id through the concept of 'license'. However, license_id itself is not elaborated beyond the schema, and schema coverage is 0%, so partial compensation only.

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

Purpose5/5

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

The description clearly states the action (retrieves), the resource (license seats), and the ordering (by seat number). It also mentions an optional filter for available seats, distinguishing it from related assignment tools.

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

Usage Guidelines3/5

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

The description implies this is for reading license seats, especially given the sibling tools (assign/unassign). However, it does not explicitly state when to use this tool versus alternatives like get_license or list_licenses.

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

list_locationsC

ロケーションを検索・一覧表示します。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are present, so the description must carry the full behavioral burden. It merely says 'search and list' without disclosing pagination behavior, search semantics, or confirming that the operation is read-only with no side effects.

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

Conciseness4/5

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

The description is a single, concise sentence with no fluff, front-loading the action. It is appropriately short for a simple list operation, though it lacks some 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?

Given the three parameters and the absence of annotations or an output schema, the description is incomplete. It doesn't explain how search works, what the response looks like, or how limit/offset are applied, making it insufficient for an agent to invoke 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?

The input schema includes limit, offset, and search parameters, but the description offers zero explanation about them. With schema description coverage at 0%, the description does nothing to compensate for the lack of parameter details.

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

Purpose5/5

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

The description 'ロケーションを検索・一覧表示します。' clearly states the tool's function as searching and listing locations. The resource 'locations' is specific and distinct from sibling tools like list_assets or list_categories, making the purpose unambiguous.

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

Usage 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 the many sibling tools (e.g., list_assets, list_categories). There are no explicit use cases, alternatives, or exclusions mentioned.

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

list_modelsA

資産モデルを検索・一覧表示します。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 'Search and list' clearly indicates a read-only operation, which is adequate for a simple listing tool. However, it does not disclose pagination behavior, return format, or any potential side effects. For a lightweight read tool, this is minimally acceptable but lacks depth.

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

Conciseness5/5

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

The description is a single sentence that is concise and front-loaded with the core purpose. There is no wasted prose or unnecessary detail, making it highly efficient for the agent to parse.

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

Completeness2/5

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

The tool has no output schema, no annotations, and 0% parameter descriptions. The one-line description does not elaborate on return values, pagination behavior, search semantics, or when to use this tool over siblings. For a listing tool with three parameters and no structured documentation, the description is incomplete.

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 must compensate. The description mentions 'search' generically but does not explain how the 'search' parameter works, what fields it matches, or the meaning of 'limit' and 'offset' beyond their name-based intuition. The schema itself has no descriptions, leaving the agent to guess parameter semantics.

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

Purpose5/5

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

The description '資産モデルを検索・一覧表示します' clearly states the tool searches and lists asset models, using specific verbs (search/list) and a specific resource (asset models). It distinguishes from siblings like list_assets (which likely lists assets, not models) and get_asset.

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

Usage Guidelines3/5

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

The description implies usage for searching/listing asset models but does not explicitly state when to prefer this over alternatives like list_assets or get_asset. The intent is understandable from the name and description, but no exclusions or alternative guidance is provided.

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

list_usersB

ユーザーを検索・一覧表示します。limitは最大100件です。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo

TDQS

B3.3/5.0
Behavior3/5

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

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It does state that the limit has a maximum of 100, which is a useful constraint. However, it does not disclose whether the operation is read-only, whether pagination via offset is supported, or what the return structure looks like. The description is adequate but minimal for a list operation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that immediately states the purpose and includes a key constraint. Every word earns its place, with no filler or repetition.

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, no annotations, and 3 parameters, the description is far from complete. It fails to mention return format, pagination behavior (offset), or search semantics. An agent would struggle to know what to expect from the response or how to appropriately set the search parameter.

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 must compensate. It only explains the 'limit' parameter (max 100), leaving 'offset' and 'search' with no added meaning. The word 'search' in the description hints at the search parameter but does not clarify its behavior (e.g., partial vs exact match). This is insufficient for a 3-parameter tool.

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

Purpose5/5

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

The description clearly states 'Search and list users' with a specific verb (search/list) and resource (users), distinguishing it from the sibling 'get_user' which implies a single user lookup. The mention of 'limit' further clarifies it's a list operation with a cap.

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 like 'get_user'. It does not mention exclusions or prerequisites. The only contextual hint is the limit constraint, but this does not help the agent decide between list_users and get_user.

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

unassign_license_seatB

ライセンスのシートを資産またはユーザーから割り当て解除します。

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
seat_idYes
license_idYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It discloses the basic mutation (unassign) but does not mention side effects, permission requirements, failure conditions, or whether the operation is reversible. The lack of behavioral detail is a gap.

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

Conciseness5/5

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

The description is a single, concise sentence that immediately conveys the core purpose. No unnecessary words or filler.

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 3-parameter tool with no output schema and no annotations, the description is too minimal. It does not address the dual nature (asset vs user) or how the operation is executed, leaving the agent uncertain about the exact behavior and 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 coverage is 0%, so the description must compensate. It mentions 'asset or user' but does not map these to the available parameters (license_id, seat_id), leaving ambiguity about how the target is specified. The note parameter is not explained.

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

Purpose5/5

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

The description clearly states the verb 'unassign' and the resource 'license seat', specifying that it removes the assignment from an asset or user. This distinguishes it from sibling assignment tools like assign_license_seat_to_asset.

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 explicit when-to-use guidance or mention of alternatives. It implies its use for unassigning seats but does not clarify when to choose this over other tools or what prerequisites exist.

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. 16 tool updatesv0.1.0
    • First observedassign_license_seat_to_asset
    • First observedassign_specific_license_seat_to_asset
    • First observedcheck_connection
    • First observedcreate_asset
    • First observedcreate_license
    • First observedget_asset
    • First observedget_license
    • First observedget_user
    • First observedlist_assets
    • First observedlist_categories
    • First observedlist_license_seats
    • First observedlist_licenses
    • First observedlist_locations
    • First observedlist_models
    • First observedlist_users
    • First observedunassign_license_seat

TDQS

B3.2/5.0

Scored across 16 tools

Disambiguation4/5

Most tools map to a distinct resource and action, like get_asset, list_assets, create_asset. The only close pair is assign_license_seat_to_asset and assign_specific_license_seat_to_asset, but their descriptions clearly differentiate auto-selection vs. explicit seat ID.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (get, list, create, check, assign, unassign). Even compound targets like list_license_seats and assign_license_seat_to_asset fit the pattern cleanly.

Tool Count4/5

At 16 tools, the set is slightly above the ideal 3-15 range, but the scope justifies it: assets, licenses, users, and reference data (categories, locations, models) are all covered. No bloat or redundant tools beyond the closely related seat assignment pair.

Completeness3/5

Core asset and license workflows are covered (create, get, list, license seating), but major gaps exist: no update_asset, delete_asset, asset checkin/checkout, or license update/delete. User management is limited to read-only, and reference data cannot be modified.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Read-only MCP server that allows AI assistants to query and monitor KVM Fleet devices, audit logs, and console sessions through the official REST API.
    5
    5 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A read-only MCP server for InvGate Asset Management, enabling natural language queries for assets, people, computers, servers, software, and API health.
    12
    6 npm
    1
    MIT
  • A
    license
    A
    quality
    C
    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