Skip to main content
Glama
yone-k

Zaim API MCP Server

by yone-k

Zaim API MCP Server

English README

Zaimの家計簿データを取得・作成・更新・削除する、Go製のMCPサーバーです。MCPクライアントとはstdioで通信し、Zaim APIへのリクエストにはOAuth 1.0aの署名を付けます。

特徴

  • 認証・ユーザー情報、家計簿、マスターデータを扱う18ツール

  • 公式Go MCP SDK v1.8.0と、Zaim API向けのGo SDK go-zaim v0.1.0を使用

  • MCP 2026-07-28、2025-11-25、2025-06-18、2025-03-26、2024-11-05に対応

  • JSON Schemaで入力・出力を検証し、結果をstructuredContentとJSONテキストで返却

  • 小数金額やAPI由来の追加フィールドを保持

  • GoバイナリとDockerによる起動

Related MCP server: Money Lover MCP Server

要件

ソースからビルドする場合はGo 1.26.2以上、Dockerで起動する場合はDockerが必要です。

インストール・起動

ローカルバイナリ

git clone https://github.com/yone-k/zaim-api-mcp.git
cd zaim-api-mcp

go build -o dist/zaim-api-mcp ./cmd/zaim-api-mcp
./dist/zaim-api-mcp

Goのbinディレクトリへインストールする場合は、ソース取得後に次を実行します。

go install ./cmd/zaim-api-mcp
zaim-api-mcp

サーバーはstdinからMCPメッセージを受け取り、stdoutへ応答します。起動ログはstderrへ出力します。

Docker

docker build -t zaim-api-mcp .
docker run --rm -i \
  -e ZAIM_CONSUMER_KEY -e ZAIM_CONSUMER_SECRET \
  -e ZAIM_ACCESS_TOKEN -e ZAIM_ACCESS_TOKEN_SECRET \
  zaim-api-mcp

環境変数を設定したシェルから、Composeでも起動できます。

docker compose build
docker compose run --rm -T zaim-api

auth loginで保存した認証情報をDockerで使う方法は、「Dockerで保存した認証情報を使う」を参照してください。

認証

Zaim APIへのリクエストには、OAuth 1.0aの署名に使う次の4つの値が必要です。

値

入手方法

Consumer Key・Consumer Secret

Zaim Developersでアプリケーションを登録して発行

Access Token・Access Token Secret

auth loginで、ブラウザからアクセスを許可して取得

4つの値は、auth loginでファイルに保存するか、環境変数で渡します。サーバーは次の基準で認証情報を選びます。

  • 4つの環境変数がすべて設定されていれば、環境変数を使います。

  • 4つとも未設定なら、auth loginで保存したファイルを使います。

  • 一部だけ設定されている場合は、保存したファイルと組み合わせずにエラーにします。

認証情報はツールの実行時に検証するため、未設定でもサーバーの起動とツール一覧の取得はできます。

auth loginで保存する

go installでインストールした場合は、次のコマンドを実行します。dist/にビルドした場合は、./dist/zaim-api-mcp auth loginを実行してください。

zaim-api-mcp auth login
  1. Consumer KeyとConsumer Secretを入力します。環境変数ZAIM_CONSUMER_KEYとZAIM_CONSUMER_SECRETが設定されていれば、入力は求めません。

  2. ブラウザでZaimの認可画面が開くので、アクセスを許可します。ブラウザが開かない場合は、表示されたURLを手動で開いてください。

  3. コマンドがAccess Tokenを取得し、4つの値をファイルに保存します。

保存先は~/.config/zaim-api-mcp/credentials.jsonです。XDG_CONFIG_HOMEを設定している場合は、$XDG_CONFIG_HOME/zaim-api-mcp/credentials.jsonに保存します。ファイルは本人だけが読み書きできる権限(0600)で作成します。

認可後のコールバックはhttp://localhost:8080/callbackで受け取ります。ポートを変える場合は--portを指定してください。5分以内に許可しないと中断します。

保存した認証情報を使う場合、MCPクライアントの設定にenvは不要です。これまで環境変数で設定していた場合は、MCPクライアントの設定から4つのZAIM_*を削除してください。4つとも残っていると環境変数が使われ、一部だけ残っているとエラーになります。

環境変数で渡す

Access TokenとAccess Token Secretを別の方法で取得済みの場合は、4つの値を環境変数で渡せます。

export ZAIM_CONSUMER_KEY=your_consumer_key
export ZAIM_CONSUMER_SECRET=your_consumer_secret
export ZAIM_ACCESS_TOKEN=your_access_token
export ZAIM_ACCESS_TOKEN_SECRET=your_access_token_secret

Dockerで保存した認証情報を使う

ホストでauth loginを実行してから、保存先のディレクトリを読み取り専用でマウントします。コンテナ内でファイルを読めるよう、--userでホストと同じユーザーIDを指定してください。

docker run --rm -i \
  --user "$(id -u):$(id -g)" \
  -e XDG_CONFIG_HOME=/config \
  -v "$HOME/.config/zaim-api-mcp:/config/zaim-api-mcp:ro" \
  zaim-api-mcp

MCPクライアント設定

サーバー名は従来のzaim-apiを使います。commandには、ビルドしたGoバイナリの絶対パスを指定してください。

auth loginで認証情報を保存した場合の設定例です。

{
  "mcpServers": {
    "zaim-api": {
      "command": "/absolute/path/to/zaim-api-mcp/dist/zaim-api-mcp"
    }
  }
}

環境変数で渡す場合の設定例です。

{
  "mcpServers": {
    "zaim-api": {
      "command": "/absolute/path/to/zaim-api-mcp/dist/zaim-api-mcp",
      "env": {
        "ZAIM_CONSUMER_KEY": "your_consumer_key",
        "ZAIM_CONSUMER_SECRET": "your_consumer_secret",
        "ZAIM_ACCESS_TOKEN": "your_access_token",
        "ZAIM_ACCESS_TOKEN_SECRET": "your_access_token_secret"
      }
    }
  }
}

Dockerを使う場合の設定例です。

{
  "mcpServers": {
    "zaim-api": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "ZAIM_CONSUMER_KEY",
        "-e", "ZAIM_CONSUMER_SECRET",
        "-e", "ZAIM_ACCESS_TOKEN",
        "-e", "ZAIM_ACCESS_TOKEN_SECRET",
        "zaim-api-mcp"
      ],
      "env": {
        "ZAIM_CONSUMER_KEY": "your_consumer_key",
        "ZAIM_CONSUMER_SECRET": "your_consumer_secret",
        "ZAIM_ACCESS_TOKEN": "your_access_token",
        "ZAIM_ACCESS_TOKEN_SECRET": "your_access_token_secret"
      }
    }
  }
}

ツール

分類

ツール

操作

認証

zaim_check_auth_status

認証状態の確認

ユーザー

zaim_get_user_info

プロフィール・統計情報の取得

家計簿

zaim_get_money_records

フィルター・ページ指定で記録を取得

家計簿

zaim_create_payment

支出の作成

家計簿

zaim_create_income

収入の作成

家計簿

zaim_create_transfer

振替の作成

家計簿

zaim_update_money_record

記録の更新

家計簿

zaim_delete_money_record

記録の削除

家計簿

zaim_bulk_create_payments

支出の一括作成(最大100件)

家計簿

zaim_bulk_create_incomes

収入の一括作成(最大100件)

家計簿

zaim_bulk_create_transfers

振替の一括作成(最大100件)

家計簿

zaim_bulk_update_money_records

記録の一括更新(最大100件)

マスター

zaim_get_user_categories

ユーザーカテゴリ一覧

マスター

zaim_get_user_genres

ユーザージャンル一覧

マスター

zaim_get_user_accounts

口座一覧

マスター

zaim_get_default_categories

デフォルトカテゴリ一覧

マスター

zaim_get_default_genres

デフォルトジャンル一覧

マスター

zaim_get_currencies

通貨一覧

ツール名・引数・既定値と、成功時のJSON形式は従来どおりです。

  • 記録取得の既定値はlimit=20・page=1です。

  • 作成・更新のamountは正数です。

  • 支出の更新にはgenre_idが必要です。

  • 入力検証・認証・API処理に失敗した場合はisError=trueを返します。

  • 一括処理はitemsの各要素を単体ツールと同じ引数で受け取り、順番に1回ずつ送信します。失敗した要素があっても残りを続け、要素ごとの結果を返します。isError=trueになるのは、全件が失敗した場合です。dry_run=trueではAPIを呼ばずに検証のみ行います。

対応プロトコル

MCP 2026-07-28のクライアントはserver/discoverとリクエストごとの_metaを使い、旧仕様のクライアントはinitializeで接続します。2024-10-07は対応バージョンに含まれません。

開発・検証

go test ./...
go vet ./...
go build -o dist/zaim-api-mcp ./cmd/zaim-api-mcp

単体操作の14ツールの入力と期待する結果を収録した、199件のテストデータで互換性を検証します。API応答にはダミーHTTPサーバーを使います。

プロトコルテストでは実バイナリを起動し、新旧仕様での接続、stdoutとstderrの分離、EOF・SIGINT・SIGTERMによる終了を確認します。キャンセルがHTTP通信まで伝わることも検証します。

Dockerイメージにも同じstdio検証を実行できます。

docker build -t zaim-api-mcp .
ZAIM_MCP_TEST_IMAGE=zaim-api-mcp go test ./internal/mcp -run TestStdioServer -count=1

テストは実Zaim APIへ接続しません。実バイナリの検証では、認証情報の環境変数を空にします。ローカルのバイナリを起動するときは、HOMEとXDG_CONFIG_HOMEも一時ディレクトリに向け、保存した認証情報を読まないようにしています。

PR作成・更新時とmainへの更新時には、GitHub Actionsでコードの整形、vet、race検査付きテスト、ビルドを確認します。Dockerでも新旧仕様での接続と終了処理を検証します。

ディレクトリ構成

cmd/zaim-api-mcp/       起動・終了処理、authサブコマンドの振り分け
internal/auth/         auth loginの認可フロー
internal/config/       環境変数・保存ファイルからの認証情報の読込、保存、伏字
internal/mcp/          MCPサーバーと契約・プロトコルテスト
internal/mcp/tools/    18ツール、入出力スキーマ、応答変換
internal/version/      サーバーバージョン
testdata/              互換性検証用のテストデータと既存ツール定義

ライセンス

MIT

関連リンク

Available Tools

14 tools
zaim_check_auth_statusB

Zaim APIの認証状態をチェックし、アクセストークンの有効性を確認します

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe important behavioral aspects: what 'checking' entails (e.g., makes a test API call), what happens if authentication fails, whether this consumes rate limits, or what the response looks like. The description is minimal and lacks operational context.

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

Conciseness5/5

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

The description is a single, efficient Japanese sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized for a simple authentication check tool and is front-loaded with the essential 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 tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the check returns (e.g., token expiry time, user info, success/failure status) or how the agent should interpret results. Given the authentication context and lack of structured output documentation, more completeness is needed.

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 (schema coverage 100%), so there are no parameters to document. The description appropriately doesn't discuss parameters, which is correct for a parameterless tool. Baseline score for zero parameters is 4.

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's purpose: checking Zaim API authentication status and verifying access token validity. It specifies the verb ('check'/'verify') and resource ('authentication status'/'access token'), but doesn't explicitly differentiate from sibling tools (though it's the only auth-related tool in the list).

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. There's no mention of prerequisites (like needing to authenticate first), error conditions, or typical use cases (e.g., before making other API calls). The agent must infer usage 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.

zaim_create_incomeC

Zaimに収入記録を作成します

NameRequiredDescriptionDefault
amountYes金額
dateYes日付(YYYY-MM-DD形式)
category_idYesカテゴリID
to_account_idNo入金先口座ID
placeNo場所・会社名
commentNoメモ

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 full burden for behavioral disclosure. It states this creates an income record (implying a write/mutation operation) but provides no information about permissions needed, whether the operation is idempotent, what happens on success/failure, rate limits, or what the response looks like. For a creation tool with zero annotation coverage, this is insufficient.

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

Conciseness5/5

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

The description is a single, efficient sentence in Japanese that directly states the tool's purpose. There's no wasted language or unnecessary elaboration. It's appropriately sized for what it communicates.

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

Completeness2/5

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

For a creation/mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what happens after creation, what the response contains, error conditions, or behavioral characteristics. The description should provide more context about this being a write operation with specific implications.

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 100% description coverage with clear parameter documentation in Japanese. The tool description adds no additional parameter information beyond what's already in the schema. With complete schema coverage, the baseline score of 3 is appropriate as the description doesn't need to compensate for schema 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 clearly states the action ('作成します' - creates) and resource ('収入記録' - income record) in Zaim. It distinguishes from siblings like zaim_create_payment (expenses) and zaim_create_transfer (transfers), but doesn't explicitly mention this distinction in the description text 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 provides no guidance on when to use this tool versus alternatives like zaim_create_payment or zaim_create_transfer. It doesn't mention prerequisites, authentication requirements, or any context about when income recording is appropriate versus other financial operations.

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

zaim_create_paymentC

Zaimに支出記録を作成します

NameRequiredDescriptionDefault
amountYes金額
dateYes日付(YYYY-MM-DD形式)
category_idYesカテゴリID
genre_idYesジャンルID
from_account_idNo出金元口座ID
placeNo場所・店舗名
commentNoメモ
nameNo品名

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. '作成します' implies a write/mutation operation, but the description doesn't disclose behavioral traits like authentication requirements, whether the operation is idempotent, error handling, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in behavioral transparency.

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

Conciseness5/5

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

The description is a single, efficient Japanese sentence that directly states the tool's purpose. It's appropriately sized and front-loaded with zero wasted words, making it easy for an agent to parse quickly.

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

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 8 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address authentication needs, error conditions, return values, or how this tool differs from similar write operations (create_income, create_transfer). The agent lacks crucial context for proper tool 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?

The description adds no parameter information beyond what the input schema provides. However, schema description coverage is 100% (all 8 parameters have descriptions in Japanese), so the baseline is 3. The description doesn't compensate with additional context about parameter relationships or usage examples.

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 'Zaimに支出記録を作成します' clearly states the action ('作成します' - creates) and resource ('支出記録' - payment record) in Japanese. It's specific about creating a payment record in the Zaim system. However, it doesn't explicitly differentiate from sibling tools like 'zaim_create_income' or 'zaim_create_transfer', which would require 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. There's no mention of when to choose this over 'zaim_create_income' or 'zaim_create_transfer', nor any prerequisites or context for usage. The agent must infer usage 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.

zaim_create_transferB

Zaimに振替記録を作成します(口座間の資金移動)

NameRequiredDescriptionDefault
amountYes金額
dateYes日付(YYYY-MM-DD形式)
from_account_idYes出金元口座ID
to_account_idYes入金先口座ID
commentNoメモ

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states it creates records without disclosing behavioral traits. It doesn't mention whether this is a write operation requiring specific permissions, if it's idempotent, what happens on failure, or any rate limits. For a mutation tool with zero annotation coverage, this is a significant gap.

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

Conciseness5/5

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

The description is a single, efficient sentence in Japanese that clearly communicates the tool's purpose. It's appropriately sized with zero wasted words and front-loads the essential information about creating transfer records.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation (success response format, error conditions), doesn't mention authentication requirements despite zaim_check_auth_status being a sibling, and provides minimal behavioral context for a write operation.

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 parameters are documented in the schema. The description adds no additional parameter semantics beyond what's in the schema. The baseline score of 3 is appropriate when the schema does the heavy lifting for parameter 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 clearly states the action ('作成します' - creates) and resource ('振替記録' - transfer record) with the context of being between accounts. It distinguishes from siblings like zaim_create_income and zaim_create_payment by specifying it's for transfers between accounts rather than income or payments.

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 context by specifying '口座間の資金移動' (fund transfers between accounts), which helps differentiate from income/payment creation tools. However, it doesn't explicitly state when to use this versus alternatives or mention any prerequisites like authentication status.

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

zaim_delete_money_recordA

Zaimの家計簿記録を削除します。削除は永続的で復元できません。

NameRequiredDescriptionDefault
idYes削除する記録のID
modeYes記録の種類

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and adds valuable behavioral context: it explicitly states deletion is permanent ('永続的') and irreversible ('復元できません'). However, it doesn't mention authentication requirements, rate limits, 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.

Conciseness5/5

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

The description is a single, efficient sentence that immediately states the tool's purpose and critical behavioral warning. Every word earns its place with no redundancy or unnecessary elaboration.

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 operation with no annotations and no output schema, the description provides essential context about permanence. However, it lacks information about authentication requirements, error responses, or what happens after deletion that would make it fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (id and mode with enum values). The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score.

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

Purpose5/5

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

The description clearly states the specific action ('削除します' - delete) and resource ('Zaimの家計簿記録' - Zaim household accounting records). It distinguishes from sibling tools like zaim_get_money_records (read) and zaim_update_money_record (update) by specifying deletion.

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 when permanent deletion of a money record is needed, but doesn't explicitly state when to use this vs alternatives like zaim_update_money_record for modifications or when not to use it. No prerequisites or comparison to siblings is provided.

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

zaim_get_currenciesB

Zaimで利用可能な通貨一覧を取得します

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states what the tool does ('get currency list') without adding context like authentication needs, rate limits, or what the return format might be. For a tool with zero annotation coverage, this is a significant gap 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, efficient sentence in Japanese that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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

Completeness3/5

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

Given the tool's low complexity (0 parameters, no output schema), the description is minimally adequate. However, with no annotations and no output schema, it lacks details on behavioral aspects like return values or error handling. It meets the basic requirement but leaves gaps that could hinder agent performance.

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 0 parameters, and the schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it doesn't introduce any confusion. A baseline of 4 is appropriate as it avoids misalignment with the schema.

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

Purpose4/5

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

The description clearly states the verb '取得します' (get/retrieve) and the resource '通貨一覧' (currency list), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'zaim_get_user_accounts' or 'zaim_get_user_info', which are also retrieval operations but for different resources, so it doesn't reach the highest score.

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 doesn't mention context, prerequisites, or exclusions, such as whether it requires authentication or how it relates to other 'get' tools in the sibling list. This leaves the agent with minimal usage context.

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

zaim_get_default_categoriesB

Zaimのデフォルトカテゴリ一覧を取得します(支出または収入)

NameRequiredDescriptionDefault
modeYesカテゴリのモード(支出/収入)

TDQS

B3.1/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 states it's a read operation ('取得します' - get), which implies non-destructive behavior, but doesn't mention any behavioral traits like authentication requirements, rate limits, or what the output looks like. For a tool with zero annotation coverage, this is a significant gap, as it doesn't add context beyond the basic purpose.

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

Conciseness4/5

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

The description is a single, efficient sentence in Japanese that directly states the purpose. It's appropriately sized and front-loaded with the key action and resource. There's no wasted text, but it could be slightly more structured if it included brief usage hints, though it's not necessary for conciseness.

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

Completeness2/5

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

Given the complexity (a read operation with one parameter) and no annotations or output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., list format, fields) or any behavioral aspects like error handling. For a tool with no structured data to rely on, the description should provide more context to be fully helpful, making it 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?

The description adds minimal meaning beyond the input schema. It mentions '支出または収入' (expense or income), which aligns with the 'mode' parameter's enum values ('payment' and 'income'), but the schema already has 100% coverage with a clear description for 'mode.' With high schema coverage, the baseline is 3, and the description doesn't compensate with additional details like parameter constraints or examples, so it meets the minimum viable standard.

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's purpose: 'Zaimのデフォルトカテゴリ一覧を取得します(支出または収入)' translates to 'Get Zaim's default category list (expense or income).' It specifies the verb ('取得します' - get) and resource ('デフォルトカテゴリ一覧' - default category list), and distinguishes it from siblings like 'zaim_get_user_categories' by specifying 'default' categories. However, it doesn't explicitly contrast with all siblings, such as 'zaim_get_default_genres,' which is similar but for genres, so it's not a perfect 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?

The description implies usage by mentioning '支出または収入' (expense or income), which relates to the 'mode' parameter, but it doesn't provide explicit guidance on when to use this tool versus alternatives. For example, it doesn't clarify when to use 'zaim_get_default_categories' versus 'zaim_get_user_categories' or 'zaim_get_default_genres.' The context is clear but lacks explicit when/when-not statements or named alternatives, so it's adequate but with gaps.

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

zaim_get_default_genresB

Zaimのデフォルトジャンル一覧を取得します(支出または収入)

NameRequiredDescriptionDefault
modeYesジャンルのモード(支出/収入)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a retrieval operation ('取得します'), which implies read-only behavior, but doesn't mention any constraints like rate limits, authentication requirements, or response format details that would help the agent understand how to properly invoke it.

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

Conciseness5/5

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

The description is a single, efficient sentence in Japanese that communicates the core purpose without any wasted words. It's appropriately sized for a simple retrieval tool with one parameter.

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

Completeness3/5

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

For a simple read operation with 100% schema coverage but no annotations or output schema, the description provides adequate basic information about what the tool does. However, it lacks details about authentication requirements, response format, or error conditions that would be helpful for the agent.

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 fully documents the single 'mode' parameter with its enum values and description. The description adds no additional parameter information beyond what's in the schema, meeting the baseline expectation when schema coverage is high.

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

Purpose4/5

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

The description clearly states the action ('取得します' - get/retrieve) and resource ('Zaimのデフォルトジャンル一覧' - Zaim's default genre list) with scope qualification ('支出または収入' - expense or income). It doesn't explicitly differentiate from sibling tools like zaim_get_user_genres, but the 'default' distinction is implied.

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 about when to use this tool versus alternatives like zaim_get_user_genres or zaim_get_default_categories. The description only states what the tool does, not when it should be selected over other available options.

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

zaim_get_money_recordsB

Zaim家計簿の支出・収入・振替記録を取得します。日付範囲、カテゴリ、モードでフィルタリング可能です。

NameRequiredDescriptionDefault
modeNo記録の種類(支出/収入/振替)
start_dateNo開始日(YYYY-MM-DD形式)
end_dateNo終了日(YYYY-MM-DD形式)
category_idNoカテゴリID
limitNo取得件数(最大100件)
pageNoページ番号(1から開始)

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. It states the tool retrieves records with filtering but doesn't disclose behavioral traits like whether this requires authentication (implied by sibling tools with auth), rate limits, pagination behavior (though schema hints at it), or what happens when no records match. The description is minimal and lacks critical operational context.

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 concise sentences in Japanese, front-loaded with the core purpose and followed by filtering capabilities. Every sentence earns its place with no wasted words, making it efficient and well-structured.

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 annotations, no output schema, and a tool with 6 parameters for retrieving financial records, the description is incomplete. It lacks information on authentication requirements, error handling, response format, and how filtering interacts (e.g., AND/OR logic). For a data retrieval tool in a household accounting context, this leaves significant gaps for an AI agent.

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 parameters thoroughly. The description adds minimal value by mentioning filtering by date range, category, and mode, but doesn't provide additional semantics beyond what's in the schema (e.g., explaining relationships between parameters). Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/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: 'Zaim家計簿の支出・収入・振替記録を取得します' (retrieves expenditure, income, and transfer records from Zaim household accounting). It specifies the verb '取得します' (retrieves) and resource '記録' (records), but doesn't explicitly differentiate from sibling tools like zaim_get_user_categories or zaim_get_user_info that also retrieve data.

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 mentions filtering capabilities ('日付範囲、カテゴリ、モードでフィルタリング可能です'), which implies usage context for retrieving filtered records. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like zaim_get_user_categories for category data or zaim_get_user_info for user information.

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

zaim_get_user_accountsB

Zaimユーザーの口座一覧を取得します

NameRequiredDescriptionDefault

No parameters

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 '取得します' (get/retrieve) implies a read-only operation, the description doesn't specify authentication requirements, rate limits, error conditions, or what the return format looks like (e.g., list structure, pagination). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence in Japanese that directly states the tool's purpose with zero wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information without unnecessary elaboration.

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 tool's simplicity (0 parameters, no output schema), the description is adequate as a basic statement of purpose. However, without annotations or output schema, it lacks details on authentication, response format, or error handling that would be helpful for an agent. It meets minimum viability but has clear gaps in contextual information.

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 0 parameters, and schema description coverage is 100% (though empty). With no parameters to document, the description doesn't need to compensate for any gaps. A baseline of 4 is appropriate since there's nothing to explain beyond what's already covered by the schema (which indicates no inputs).

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/retrieve) and resource ('Zaimユーザーの口座一覧' - Zaim user account list), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'zaim_get_user_info' or 'zaim_get_money_records' which also retrieve user-related data, so it doesn't reach the highest score.

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. With sibling tools like 'zaim_get_user_info' (which might include account info) and 'zaim_get_money_records' (which involves financial data), there's no indication of when this specific account-listing tool is appropriate or what distinguishes it from other retrieval operations.

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

zaim_get_user_categoriesB

Zaimユーザーのカスタムカテゴリ一覧を取得します

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a retrieval operation ('取得します'), implying it's read-only, but doesn't mention authentication requirements, rate limits, error conditions, or what the return format looks like. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence in Japanese that directly states the tool's purpose without any wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential 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?

For a simple read-only tool with no parameters and no output schema, the description adequately states what it does. However, without annotations or output schema, it should ideally mention what the return data looks like (e.g., list format, category structure) or authentication requirements to be more complete for agent use.

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 0 parameters with 100% schema description coverage, so the schema fully documents the input requirements. The description doesn't need to add parameter information, and it appropriately doesn't mention any parameters. The baseline for 0 parameters with full schema coverage is 4.

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/retrieve) and resource ('Zaimユーザーのカスタムカテゴリ一覧' - Zaim user's custom category list), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'zaim_get_default_categories', which might cause confusion about when to use each.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'zaim_get_default_categories' or 'zaim_get_user_genres'. It lacks context about prerequisites (e.g., authentication status) or typical use cases, leaving the agent to infer usage 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.

zaim_get_user_genresB

Zaimユーザーのカスタムジャンル一覧を取得します

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does without behavioral details. It doesn't disclose whether this is a read-only operation, requires authentication, has rate limits, or describes the return format. For a tool with zero annotation coverage, this is a significant gap 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, efficient sentence in Japanese that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to understand at a glance.

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 lack of annotations and output schema, the description is incomplete. It doesn't explain what the returned data looks like (e.g., list format, fields), authentication requirements, or error conditions. For a data retrieval tool, this leaves the agent with insufficient context to use it effectively.

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 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description doesn't need to add parameter semantics, and it correctly doesn't mention any parameters. Baseline 4 is appropriate for zero-parameter tools.

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

Purpose4/5

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

The description clearly states the action ('取得します' - get/retrieve) and the resource ('Zaimユーザーのカスタムジャンル一覧' - Zaim user's custom genre list). It distinguishes from siblings like 'zaim_get_default_genres' by specifying 'user' and 'custom' genres. However, it doesn't explicitly contrast with all siblings, keeping it at 4 rather than 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'zaim_get_default_genres' or 'zaim_get_user_categories'. It lacks context about prerequisites (e.g., authentication status) or typical use cases, offering only a basic functional statement.

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

zaim_get_user_infoB

Zaimユーザーの詳細情報(プロフィール、統計情報等)を取得します

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/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 states the tool retrieves user information but doesn't mention any behavioral traits such as authentication requirements, rate limits, response format, or whether it's a read-only operation. For a tool with zero annotation coverage, this is a significant gap 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, efficient sentence in Japanese: 'Zaimユーザーの詳細情報(プロフィール、統計情報等)を取得します'. It is front-loaded with the core purpose and uses parentheses to clarify scope without unnecessary elaboration. Every word earns its place, making it highly concise and well-structured.

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

Completeness2/5

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

Given the tool's complexity (simple retrieval with no parameters) but lack of annotations and output schema, the description is incomplete. It doesn't explain what the returned user information includes (e.g., profile vs. statistics details), authentication needs, or error handling. For a tool with no structured data to supplement it, the description should provide more context to be fully helpful.

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 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to add parameter semantics, as there are no parameters to explain. This meets the baseline for tools with no parameters, as it doesn't mislead or omit necessary information about inputs.

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's purpose: 'Zaimユーザーの詳細情報(プロフィール、統計情報等)を取得します' (Get detailed Zaim user information such as profile, statistics, etc.). It specifies the verb '取得します' (get/retrieve) and resource 'Zaimユーザーの詳細情報' (Zaim user details), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'zaim_get_user_accounts' or 'zaim_get_money_records', which also retrieve user-related data but for different 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites (e.g., authentication status), context for usage, or exclusions. Given sibling tools like 'zaim_get_user_accounts' and 'zaim_get_user_categories', the lack of differentiation leaves the agent without clear usage instructions.

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

zaim_update_money_recordC

Zaimの既存の家計簿記録を更新します

NameRequiredDescriptionDefault
idYes更新する記録のID
modeYes記録の種類
amountNo金額
dateNo日付(YYYY-MM-DD形式)
category_idNoカテゴリID
genre_idNoジャンルID(paymentモードの場合は必須)
from_account_idNo出金元口座ID(支出・振替の場合)
to_account_idNo入金先口座ID(収入・振替の場合)
placeNo場所・店舗名
commentNoメモ
nameNo品名

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. '更新します' (updates) implies a mutation operation, but the description doesn't disclose any behavioral traits: no information about authentication requirements, rate limits, error conditions, whether the update is partial or complete, or what happens to unspecified fields. For a mutation tool with 11 parameters and no annotation coverage, this is a significant gap.

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

Conciseness5/5

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

The description is a single, efficient Japanese sentence that directly states the tool's purpose: 'Zaimの既存の家計簿記録を更新します' (Updates Zaim's existing household account records). There's zero wasted verbiage or unnecessary elaboration. It's appropriately sized and front-loaded with the essential 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 mutation tool with 11 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what happens when the tool is invoked (response format, success indicators, error handling), doesn't mention authentication requirements despite sibling tools including auth-related tools, and provides no behavioral context. The description alone is insufficient for an agent to understand how to properly use this tool.

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

Parameters3/5

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

The schema description coverage is 100%, with all 11 parameters having descriptions in Japanese. The tool description doesn't add any parameter-specific information beyond what's already in the schema. According to the scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.

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

Purpose4/5

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

The description clearly states the action ('更新します' - updates) and the resource ('Zaimの既存の家計簿記録' - Zaim's existing household account records). It distinguishes from sibling tools like zaim_create_income/payment/transfer by specifying it updates existing records rather than creating new ones. However, it doesn't explicitly mention what fields can be updated beyond the general concept.

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. There are sibling tools for creating records (zaim_create_income/payment/transfer) and deleting records (zaim_delete_money_record), but the description doesn't explain when updating is appropriate versus creating new or deleting existing records. No prerequisites or constraints are mentioned.

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. 14 tool updatesv1.0.0
    • First observedzaim_check_auth_status
    • First observedzaim_create_income
    • First observedzaim_create_payment
    • First observedzaim_create_transfer
    • First observedzaim_delete_money_record
    • First observedzaim_get_currencies
    • First observedzaim_get_default_categories
    • First observedzaim_get_default_genres
    • First observedzaim_get_money_records
    • First observedzaim_get_user_accounts
    • First observedzaim_get_user_categories
    • First observedzaim_get_user_genres
    • First observedzaim_get_user_info
    • First observedzaim_update_money_record

TDQS

A3.7/5.0

Scored across 14 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Tools are well-separated by resource (e.g., money records, categories, user info) and action (e.g., create, get, update, delete). For example, zaim_create_income, zaim_create_payment, and zaim_create_transfer handle different types of money records, while get tools target specific data sets like currencies or accounts.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with the prefix 'zaim_', such as zaim_create_income, zaim_get_currencies, and zaim_update_money_record. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming style or structure.

Tool Count5/5

With 14 tools, the count is well-scoped for a personal finance API server. Each tool earns its place by covering essential operations like CRUD for money records, retrieval of metadata (currencies, categories), and user management, without being excessive or too sparse for the domain.

Completeness5/5

The tool surface provides complete CRUD/lifecycle coverage for the Zaim API domain. It includes creation, retrieval, update, and deletion for money records, along with supporting operations for authentication, user info, accounts, and metadata (currencies, categories, genres). No obvious gaps exist; agents can perform full workflows without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with YNAB budgets through natural language. Supports managing accounts, categories, transactions, and budget months with 21 tools for comprehensive budget operations.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to query and manage personal finance data through the unofficial Money Lover REST API. It provides 27 tools covering authentication, wallets, categories, transactions, events, debts, and static configuration with both read and write capabilities.
    33
    17 npm
    ISC
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to access accounts, balances, transactions and reports, manage monthly budgets, planned operations and debts, categorize spending, and safely create or edit records through the official ZenMoney API.
    22
    30 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants and MCP clients to access and manage personal finance data through LunchMoney’s API, including transactions, categories, tags, budgets, recurring items, accounts, crypto, and balance history. It supports full CRUD, filtering, bulk operations, attachments, and token-efficient responses for automated financial insights.
    22 npm
    -