Skip to main content
Glama

outlook-ews-mcp

Python MCP Exchange Status License

outlook-ews-mcp は、オンプレミスの Microsoft Exchange を EWS(exchangelib)経由で操作するための MCP サーバーです。MCP 互換クライアント(Claude Desktop、Claude Code、その他の MCP クライアント)に、メール、カレンダー、連絡先、フォルダー、添付ファイル、空き時間情報へのアクセスを、単一のテスト可能な Python サービスとして提供します。メールボックスへの直接スクリプト操作は不要です。

outlook-mcp から名称変更しました。 その名前は PyPI で無関係のプロジェクトに既に使用されていたため、配布名と CLI 名は現在 outlook-ews-mcp となっています。Python のインポートパスは変更されていません。最初のタグ付き PyPI リリースまでは、以下に示すようにこのリポジトリからインストールしてください。

目次

Related MCP server: owa-mail-mcp

特長

  • メール — 一覧表示、検索(部分一致または Advanced Query Syntax)、既読、送信、返信、転送、移動、コピー、削除、フラグ、カテゴリ、一括操作、生の MIME エクスポート、添付ファイルの追加/削除

  • システム — 受信トレイのルール、外出中(自動返信)、読み取り専用の代理人一覧

  • カレンダー — 一覧表示、作成、更新、削除、招待への返答、空き時間の検索、共有/代理人メールボックスのカレンダー表示、Room Finder、一括操作

  • 連絡先 — 検索、既読、作成、更新、削除

  • フォルダーと添付ファイル — フォルダーの CRUD と添付ファイルのダウンロード

  • 認証 — オンプレミス Exchange に対する NTLM と Basic

  • トランスポート — stdio と SSE

  • アーキテクチャ — 単一の ExchangeClient 抽象化による集中エラーマッピング(プロジェクトノート を参照)

  • 安全性 — デフォルトでプライバシーに配慮したスモークチェック(スモークチェック を参照)

  • 運用 — Docker イメージと GitHub / GitLab CI/CD パイプラインを含む

ツールカタログ

以下の各ツールは tool_specs.py に登録されており、名前、説明、スキーマの唯一の情報源です。読み取り専用 は、メールボックスを変更しないツールを示します。これらのツールはより多くの同時実行が許可され(リクエストキュー を参照)、推測的に呼び出しても安全です。

システム

ツール

説明

読み取り専用

ping_exchange

Exchange への接続を確認

✅

get_mailbox_info

メールボックスのメタデータを取得

✅

list_delegates

メールボックスの代理人とそのフォルダー権限レベルを一覧表示 — exchangelib に代理人の書き込みサポートがないため読み取り専用

✅

list_inbox_rules

サーバー側の受信トレイルールを一覧表示

✅

create_inbox_rule

サーバー側の受信トレイルールを作成(例:「この送信者から → フォルダーに移動」)

update_inbox_rule

ルールの有効/無効化、または優先度の変更(他のフィールドはここでは更新不可)

delete_inbox_rule

ID でサーバー側の受信トレイルールを削除

get_out_of_office

外出中(自動返信)の設定を取得

✅

set_out_of_office

自動返信をオフ、オンにするか、開始/終了の時間枠をスケジュール

⚠️ create_inbox_rule / update_inbox_rule / delete_inbox_rule は EWS 経由でルールを管理します。これにより、デスクトップ版 Outlook が保持するクライアント側のルールブロブが削除され、ユーザーが Outlook 自体で作成したルールが消去される可能性があります。これは文書化された EWS の動作であり、ここでのバグではありません。

メール

ツール

説明

読み取り専用

list_emails

フォルダー内のメールを一覧表示

✅

get_email

ID で完全なメールを取得

✅

get_email_mime

メッセージの生の RFC 822 MIME コンテンツを base64 エンコードでエクスポート

✅

get_thread

会話のすべてのメッセージを順序どおりに本文を含めて取得

✅

search_emails

部分一致(件名/本文/送信者)またはサーバー側の Advanced Query Syntax で検索

✅

send_email

新しいメールを送信

reply_email

メールに返信

forward_email

メールを転送

move_email

メールを別のフォルダーに移動

copy_email

メールを別のフォルダーにコピー

move_emails

一括移動、項目ごとの結果付き — 1 つの不正な ID があっても残りは失敗しない

copy_emails

一括コピー、項目ごとの結果付き

delete_emails

一括削除、項目ごとの結果付き(hard_delete でない限り論理削除)

delete_email

メールを削除

mark_email

既読状態、重要度、フォローアップフラグを更新

categorize_email

Outlook のカテゴリ(色付きラベル)を設定、追加、削除

mark_emails

mark_email の一括版、項目ごとの結果付き

categorize_emails

categorize_email の一括版、項目ごとの結果付き

list_categories

使用中のカテゴリを件数付きで一覧表示(最近のメッセージからサンプリング、メールボックスのマスターカテゴリリストではない)

✅

list_folders

メールボックスのフォルダーを一覧表示

✅

create_folder

メールボックスのフォルダーを作成

rename_folder

フォルダー名を変更 — 組み込みフォルダー(受信トレイ、送信済みアイテム、カレンダーなど)は拒否

delete_folder

フォルダーとその中のすべてを削除 — 組み込みフォルダーは拒否

create_draft

メールの下書きを作成

update_draft

下書きを更新; 省略されたフィールドは変更されず、attachments(指定された場合)はセット全体を置き換える

send_draft

既存の下書きを送信

add_attachment

ローカルファイルをメッセージ(通常は下書き)に添付 — ファイルは EXCHANGE_ATTACHMENT_ROOT の下に存在する必要があります

delete_attachment

ID でメッセージから添付ファイルを 1 つ削除

get_attachment

添付ファイルをディスクに保存

✅

カレンダー

ツール

説明

読み取り専用

list_events

期間内の予定表イベントを一覧表示します。同僚の既定の予定表には mailbox を渡します(代理人/偽装アクセスが必要で、calendar_id とは併用できません)

✅

get_event

ID で予定表イベントを取得します。同僚の予定表には mailbox を渡します

✅

create_event

予定表イベントを作成します

update_event

予定表イベントを更新します

delete_event

予定表イベントを削除します

respond_to_invite

招待に対して承諾、辞退、または仮承諾で応答します

find_free_slots

空いている会議時間枠を検索します

✅

delete_events

イベントを一括削除し、項目ごとの結果を返します

respond_to_invites

招待に一括応答し、項目ごとの結果を返します

get_my_availability

空き/予定ありスロットを取得します。同僚の予定表には mailbox を渡します

✅

list_calendars

予定表を一覧表示します

✅

list_room_lists

Room Finder の会議室リスト(会議室のグループ)を一覧表示します

✅

list_rooms

Room Finder の会議室リスト内の会議室を一覧表示します

✅

連絡先

ツール

説明

読み取り専用

search_contacts

連絡先を検索します

✅

get_contact

ID で連絡先を取得します

✅

create_contact

個人用連絡先を作成します

update_contact

個人用連絡先を更新します

delete_contact

個人用連絡先を削除します

一般的な使用例

  • Claude Desktop や他の MCP クライアントをオンプレミスの Exchange に接続する

  • 受信トレイのメッセージを検索し、メールの全文を取得する

  • AI ワークフローからメールを送信または下書きする

  • 予定表を確認し、会議を作成する

  • スケジュール調整のため空き/予定ありの時間帯を確認する

  • 個人用連絡先またはグローバル アドレス一覧を検索する

  • 直接のメールボックス スクリプトではなく、制御された MCP 境界を通じて Exchange 操作を公開する

セキュリティに関する注意

現在のコードが行うこと:

接続範囲の限定

EXCHANGE_SERVER で設定された Exchange/EWS エンドポイントにのみ接続します

テレメトリなし

テレメトリ、分析、サードパーティへのデータエクスポートのロジックは一切含まれていません

シークレットはローカルに保持

シークレットは環境変数 / .env に保持し、.gitignore で無視します(.env.example は保持しつつ .env、.env.* を無視)

クリーンなエラーペイロード

構造化された MCP エラー応答には、Exchange の生の例外テキスト、メッセージ本文、添付ファイルの内容、パスワードは一切含まれません。成功したツールは、要求されたメールボックスデータのみを返します

クリーンなログ

LOG_LEVEL はアプリ自身の outlook_mcp.* ロガーのみを制御します。exchangelib の SOAP XML ロガーは、通常はトランスポートエラー時でも ERROR レベルで完全な要求/応答 XML を出力しますが、常に強制的に無音化されます

クリーンな Docker ビルド

.dockerignore はビルドコンテキストから .env、テスト、キャッシュ、VCS メタデータを除外します

それでも注意すべき点:

  • EXCHANGE_VERIFY_SSL=false は TLS 証明書の検証を無効にします。信頼できる内部/自己署名環境でのみ使用してください。

  • EXCHANGE_AUTH_TYPE=Basic は資格情報を平文で送信するため、サーバーは http:// の EXCHANGE_SERVER に対して起動を拒否します。自分が管理するローカル/テストサーバーでのみ EXCHANGE_ALLOW_INSECURE_BASIC_AUTH=true で上書きしてください。

  • get_attachment はファイルをディスクに書き込み、send_email/reply_email/forward_email/ create_draft は(attachments 経由で)ローカルファイルを読み取り、その内容を 送信メールに添付します。信頼できないメールコンテンツと組み合わせると、プロセスが読み取り可能な 任意のファイルがプロンプトインジェクションによって外部に持ち出される可能性があります。ローカルファイルアクセスは 既定で拒否され、EXCHANGE_ATTACHMENT_ROOT が絶対ディレクトリに設定された場合のみ機能します。 これにより、attachments のパスと get_attachment の save_path の両方がそのディレクトリ ツリー内に制限されます(save_path が未設定の場合は、依然としてシステムの一時ディレクトリに フォールバックします)。

  • outlook-ews-mcp-smoke は既定でプライバシーに配慮しており、マスクされたメールボックス情報 と件数のみを出力します。stdout に実際の受信トレイ/イベントデータを明示的に出力したい場合のみ OUTLOOK_MCP_SMOKE_INCLUDE_DATA=true を設定してください。

  • LOG_FILE でファイルログを有効にする場合は、OS の権限でそのファイルを保護してください。

  • CI から Docker イメージを公開する場合は、GitLab/GitHub のプロジェクトアクセスと レジストリの権限を保護してください。

クイックスタート

uv venv
source .venv/bin/activate
uv pip install -e .[dev]
cp .env.example .env
outlook-ews-mcp

既定ではサーバーは stdio モードで実行されます。代わりに HTTP サーバーを起動するには MCP_TRANSPORT=sse を設定します。

設定

開始するための最小限の .env — 以下に示す他のすべての項目には動作する既定値があります:

EXCHANGE_SERVER=https://mail.company.com/EWS/Exchange.asmx
EXCHANGE_USERNAME=DOMAIN\username
EXCHANGE_PASSWORD=secret
EXCHANGE_EMAIL_ADDRESS=user@company.com
EXCHANGE_AUTH_TYPE=NTLM

すべての変数の完全なコメント付きコピーは .env.example にあります。

変数

デフォルト

説明

EXCHANGE_SERVER

(必須)

EWSエンドポイントURL(例: https://mail.company.com/EWS/Exchange.asmx)

EXCHANGE_USERNAME

(必須)

DOMAIN\username または UPN。バックスラッシュは正確に1つ — dotenvはエスケープシーケンスを処理しない

EXCHANGE_PASSWORD

(必須)

アカウントのパスワード

EXCHANGE_EMAIL_ADDRESS

未設定

SMTPアドレス。EXCHANGE_USERNAMEがSMTPアドレスでない場合に設定する

EXCHANGE_AUTH_TYPE

NTLM

NTLM または Basic

EXCHANGE_ALLOW_INSECURE_BASIC_AUTH

false

http:// 経由の Basic 認証を許可 — ローカル/テストサーバーのみ

EXCHANGE_VERIFY_SSL

true

サーバーのTLS証明書を検証する。false は信頼できる内部/自己署名環境のみ

EXCHANGE_VERSION

未設定(自動検出)

Exchangeサーバーのバージョン(例: EXCHANGE_2016)

EXCHANGE_TIMEZONE_FALLBACK

Europe/Moscow

Exchangeが解決不能なGUIDタイムゾーンIDを報告した場合のみ使用。通常の操作ではメールボックス自身のデフォルトタイムゾーンを使用する

EXCHANGE_TIMEOUT

30

リクエストごとのタイムアウト(秒)(1〜300)

EXCHANGE_MAX_RETRY_WAIT_SECONDS

90

Exchangeがビジー状態を報告した際の読み取り専用呼び出しに対する実時間ベースのリトライ予算。リトライ回数ではない。0 でリトライ無効。書き込みは自動リトライされない

EXCHANGE_IMPERSONATE_AS

未設定

偽装するメールボックス(Exchangeの偽装権限が必要)

EXCHANGE_ATTACHMENT_MAX_SIZE_MB

10

添付ファイルあたりの最大サイズ。アップロードと get_attachment ダウンロードの両方で適用(1〜100)

EXCHANGE_ATTACHMENT_MAX_COUNT

10

1回の送信/返信/転送/create_draft呼び出しあたりの最大添付ファイル数(1〜100)

EXCHANGE_ATTACHMENT_MAX_TOTAL_SIZE_MB

25

1回の呼び出しあたりの添付ファイル合計サイズの上限(1〜500)

EXCHANGE_ATTACHMENT_ROOT

未設定(無効)

添付ファイルのパスを制限するディレクトリ。未設定の場合、attachments/save_path に対するすべてのローカルファイルアクセスを拒否する。絶対ディレクトリを設定すると、その内部のパスのみ許可される

EXCHANGE_EMAIL_BODY_MAX_CHARS

200000

get_email の body_text/body_html の上限(1,000〜5,000,000)。より長い本文は truncated: true 付きで切り詰められる

EXCHANGE_EMAIL_MIME_MAX_SIZE_MB

25

base64展開前の生MIMEエクスポートサイズの上限(1〜100)

EXCHANGE_SIGNATURE_TEXT

未設定

送信テキスト本文および返信/転送に追加される。EWSに署名APIは存在しないため、これは設定であり、メールボックスのOutlook署名ではない

EXCHANGE_SIGNATURE_HTML

未設定

送信HTML本文に追加される。上記と同じ注意事項。両者間の相互変換はない。どちらも呼び出しごとに include_signature: false でスキップ可能

MCP_TRANSPORT

stdio

stdio または sse

MCP_SSE_HOST

127.0.0.1

MCP_TRANSPORT=sse 時のバインドホスト

MCP_SSE_PORT

8080

MCP_TRANSPORT=sse 時のバインドポート

MCP_MAX_CONCURRENCY

4

同時実行できる読み取り専用ツール呼び出し数(1〜8)。変更を伴う呼び出しは常に排他的に実行される。リクエストキュー を参照

MCP_MAX_QUEUE_SIZE

20

同時に受け入れられる呼び出しの最大数(実行中+待機中)(1〜1000)。これを超えると呼び出しは即座に server_busy エラーを受け取る

LOG_LEVEL

INFO

DEBUG、INFO、WARNING、または ERROR

LOG_FILE

未設定(stderr)

ログファイルのパス。設定する場合はOSの権限で保護すること

単一の変数に紐づかない動作上の注意事項:

  • list_events と find_free_slots は上限付きの limit(デフォルト200、最大 1000)を受け付ける。イベント範囲は366日、空きスロット範囲は31日に制限されるため、 広範なクエリで無制限のEWSまたはMCPレスポンスが生成されることはない。

  • 一覧は意図的に軽量に保たれている: メールの要約には送信者は含まれるが受信者リストは含まれない (get_email に含まれる)、list_events は本文なしでイベントを返す (get_event に含まれる)、get_email は include_headers: true の場合のみRFC-822ヘッダーを返す。

  • 送信操作は、EWSが送信済みコピーに永続的なIDを提供しない場合(特に返信、転送、送信済み下書き)に id: null を返す。

  • 添付ファイルのメタデータには downloadable が含まれる。埋め込まれたExchangeアイテム添付ファイルは downloadable: false であり、get_attachment で保存できない。

リクエストキュー

クライアントは複数のツール呼び出しを並行して発行する。Exchangeの処理はブロッキングであるため、サーバーは ワーカースレッドで実行し、1つの共有FIFOキューを通じて呼び出しを受け入れる。

  • MCP_MAX_CONCURRENCY(デフォルト 4)は、読み取り専用呼び出しを同時にいくつ実行するかを設定する。 これにより、エージェントがメール、フォルダーリスト、カレンダーを要求する場合、合計ではなく最も遅い ラウンドトリップの時間で済む。変更を伴う呼び出しは常に排他的に実行される — 一度に1つ、読み取りと 重なることはない — そのため、共有アカウント状態での読み取り/書き込み競合は発生しない。制限を超えた 呼び出し元は到着順に待機する。待機中の変更操作は、後続の読み取りが追い越すのをブロックする。

  • MCP_MAX_QUEUE_SIZE(デフォルト 20)は、実行中または待機中として同時に受け入れられる呼び出し数を 制限する。すでにその数に達している場合、それ以降の呼び出しは無制限のキューに参加する代わりに即座に server_busy エラーを受け取る。

  • 処理実行中もトランスポートは応答性を維持する。 ツールはイベントループスレッドで実行されるのではなく awaitされるため、完了したレスポンスは即座に送信され、長時間の呼び出しが実行中でもpingに応答する。

  • 意図的に呼び出しごとのタイムアウトはない。 ソケット読み取りでブロックされたスレッドは外部から 強制終了できない。ランタイムができるのは待機をやめることだけであり、それは保持しているEWSセッションと ともにスレッドを放棄することになる。exchangelib のセッションプールにはハードな上限があり、諦める経路なしに ループでセッションを配布するため、リークしたセッションは最終的にプールを枯渇させ、以降のすべての呼び出しが 永久にブロックされる。遅い呼び出しは代わりに待機され、EXCHANGE_TIMEOUT と EXCHANGE_MAX_RETRY_WAIT_SECONDS によって制限される: アカウントのリトライポリシーはフェイルファストであるため、 すべてのEWS呼び出しは最初の一時エラーで例外を発生させ、exchangelib が内部的に永久にリトライすることはない。 ExchangeClient は読み取り専用呼び出しのみを自身でリトライし、その実時間予算によって制限される。 書き込みは自動リトライされない。予算を超えた超過分はログに記録される。

Claude Desktopの例

{
  "mcpServers": {
    "outlook": {
      "command": "outlook-ews-mcp",
      "env": {
        "EXCHANGE_SERVER": "https://mail.company.com/EWS/Exchange.asmx",
        "EXCHANGE_USERNAME": "DOMAIN\\username",
        "EXCHANGE_PASSWORD": "secret",
        "EXCHANGE_EMAIL_ADDRESS": "user@company.com",
        "EXCHANGE_AUTH_TYPE": "NTLM"
      }
    }
  }
}

スモークチェック

.env を記入した後、以下を実行する:

outlook-ews-mcp-smoke

デフォルトの出力は安全な検証のためサニタイズされている。意図的にサンプルのメールボックス/イベントデータを 出力に含めたい場合:

OUTLOOK_MCP_SMOKE_INCLUDE_DATA=true outlook-ews-mcp-smoke

Docker

docker build -t outlook-ews-mcp .
docker run --rm --env-file .env outlook-ews-mcp

CI/CD

GitHub ActionsとGitLab CIはどちらも、pyproject.toml に固定された uv バージョンを使用して、lint、フォーマット、 型チェック、テスト、依存関係監査、パッケージビルドを実行する。

GitHub

さらに、OIDCトラステッドパブリッシングを介してタグ付きリリース(v*)をPyPIに公開する。最初のリリース前に、リポジトリ viartemev/outlook-ews-mcp、ワークフロー ci.yml、環境 pypi に対してPyPIのpending publisherを設定すること — GitHubには長期間有効なPyPIトークンは保存されない。

GitLab

さらに、デフォルトブランチとタグで、組み込みの CI_REGISTRY / CI_REGISTRY_USER / CI_REGISTRY_PASSWORD / CI_REGISTRY_IMAGE 変数を使用してDockerイメージをビルドし、GitLab Container Registryにプッシュする。

デフォルトのイメージタグ付け動作:

トリガー

プッシュされるタグ

デフォルトブランチ

:$CI_COMMIT_SHORT_SHA と :latest

Gitタグ

:$CI_COMMIT_TAG

開発

uv run --python 3.12 --with '.[dev]' ruff check .
uv run --python 3.12 --with '.[dev]' pytest -q

プロジェクトノート

  • 実装は単一の ExchangeClient 抽象化を中心としており、認証、トランスポート、リトライ、エラーマッピングが一元化されている。

  • エラーはMCPの isError=true 処理に適した構造化JSON形式で返される。

コントリビューション

バグ報告とPRは歓迎します — CONTRIBUTING.mdを参照してください。実際のExchange serverなしで開発環境をセットアップし、テストスイートを実行する方法が記載されています。脆弱性の報告については、SECURITY.mdを参照してください。

ライセンス

MIT — LICENSEを参照してください。

Available Tools

31 tools
copy_emailC

Copy email to another folder

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden. It only states the basic function without disclosing side effects, permissions, error conditions, or output behavior.

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

Conciseness2/5

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

The description is extremely short (6 words), but this conciseness sacrifices critical information. It is not a model of efficient communication since it omits necessary details.

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

Completeness2/5

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

Given a single undocumented parameter and no annotations, the description fails to provide enough context for correct invocation. The output schema exists but is not leveraged in the description.

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 only parameter 'kwargs' is completely undocumented in both schema and description, with 0% schema description coverage. The description offers no guidance on required keys or values.

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 ('copy') and the resource ('email to another folder'), distinguishing it from sibling tools like 'move_email' which implies relocation rather than duplication.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., copy vs. move email). No prerequisites or context provided, leaving the agent to infer usage.

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

create_contactC

Create a personal contact

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.1/5.0
Behavior1/5

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

No annotations are present, and the description provides no behavioral details such as authentication requirements, side effects, or error handling. The description is too sparse to be informative.

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

Conciseness2/5

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

The description is minimal (one sentence) but lacks necessary detail. While concise, it fails to provide useful information beyond the tool's name, reducing its effectiveness.

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 low parameter count, the description should still explain the parameter's structure and expected output. It does not, leaving the agent with no actionable information.

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 sole parameter 'kwargs' is opaque with no description or type constraints. With 0% schema description coverage, the description offers no clarification, making it impossible for an agent to know what keys or values are expected.

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 'Create' and the resource 'personal contact'. It distinguishes from sibling tools like 'update_contact' and 'delete_contact', though it does not elaborate on what constitutes a personal contact.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. No exclusions, prerequisites, or contextual advice provided.

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

create_draftC

Create an email draft

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are present, and the description fails to disclose behavioral traits beyond the basic action. It does not mention what the draft entails (e.g., recipients, body) or any side effects, leaving the agent uninformed about critical behavior.

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

Conciseness3/5

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

The description is a single sentence, which is concise. However, it is too brief to be useful, scoring an average as the brevity comes at the cost of 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?

Despite having an output schema (not detailed) and a complex domain (email drafts), the description provides no information on return values, how to populate content, or relation to other email tool actions, making it incomplete for effective use.

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 has a single required 'kwargs' parameter with no defined properties and 0% coverage. The description adds no explanation, so the agent cannot understand how to structure the parameter or what keys are expected, making it nearly unusable.

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

Purpose4/5

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

The description clearly states the action ('Create') and resource ('email draft'), which is specific. However, given sibling tools like 'send_draft' and 'create_event', it does not differentiate further, but it is still unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'send_draft' or 'create_event'. The description lacks context for appropriate usage scenarios.

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

create_eventC

Create a calendar event

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, and the description only says 'Create a calendar event'. It does not disclose any behavioral traits such as permissions required, side effects, or what happens if the event already exists.

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

Conciseness2/5

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

The description is a single sentence, but it is under-specified. Conciseness is achieved at the cost of omitting 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, generic parameter, and no explanation of output, the description is insufficient. The agent needs more context to use it correctly.

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

Parameters1/5

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

The input schema has a single parameter 'kwargs' with no description and 0% schema coverage. The description adds no context about what kwargs should contain, leaving the agent without guidance.

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?

Description states 'Create a calendar event', clearly indicating the action (create) and resource (calendar event). However, it does not distinguish from sibling tools like update_event or respond_to_invite, but the verb 'create' is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like update_event or respond_to_invite. No prerequisites or usage constraints provided.

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

create_folderC

Create a mailbox folder

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.1/5.0
Behavior1/5

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

The description gives no behavioral details beyond the action. Since no annotations are present, the description should disclose effects (e.g., duplication behavior, permissions, limits), but it does not. 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.

Conciseness2/5

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

The description is very short (4 words), but it is under-specification rather than concise. It sacrifices necessary detail for brevity.

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

Completeness1/5

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

With 0% schema description coverage and no annotations, the description must provide comprehensive context. It fails to explain the 'kwargs' parameter, return value (though output schema exists), or any usage details. Completely inadequate for the tool's complexity.

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

Parameters1/5

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

The sole parameter 'kwargs' is not described in the schema or description. The description adds no meaning to what this parameter should contain, making it impossible for an AI agent to use correctly.

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 'Create a mailbox folder', which clearly identifies the action (create) and resource (mailbox folder). It distinguishes from sibling tools like 'list_folders' or 'move_email' by specifying creation. However, it lacks specificity about which mailbox or folder hierarchy.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'list_folders' for reading or other creation tools. No context on prerequisites or exclusions is provided.

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

delete_contactC

Delete a personal contact

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, so the description must disclose behavioral traits. It only states 'Delete', which implies destruction, but lacks details on permanence, authorization, or 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.

Conciseness3/5

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

The description is a single sentence, which is concise but at the expense of essential details. It could be restructured to include parameter expectations within the same brevity.

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

Completeness1/5

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

Given the vague input schema, lack of annotations, and many sibling tools, the description fails to provide enough context for correct invocation. The agent is left with critical knowledge gaps.

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 has a single 'kwargs' parameter with 0% description coverage. The description offers no guidance on what kwargs should contain, leaving the agent unable to construct a valid input.

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 'Delete' and the resource 'personal contact', effectively distinguishing it from sibling tools like create_contact, update_contact, and get_contact.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. With 30 sibling tools including delete_email and delete_event, the description should clarify its specific scope.

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

delete_emailC

Delete an email

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior1/5

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

Without annotations, the description carries full burden for behavioral disclosure. It does not specify whether deletion is permanent, moves to trash, or if any confirmation is needed.

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

Conciseness2/5

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

The description is extremely short and under-specified. While front-loaded, it fails to provide essential details, making it insufficiently concise.

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

Completeness2/5

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

Given that an output schema exists but no annotations, the description is incomplete. It does not cover key contextual details like deletion behavior or side effects.

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 sole parameter 'kwargs' has no description in the schema (0% coverage), and the description adds no meaning beyond the parameter name.

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 'Delete' and resource 'an email', which is specific and distinguishes it from sibling tools like 'delete_contact' or 'delete_event'.

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, nor any prerequisites or exclusions. The description gives no context for appropriate usage.

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

delete_eventC

Delete a calendar event

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/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 but only states it deletes an event. Missing critical details such as irreversibility, required permissions, impact on recurring events, or cancellation notifications.

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

Conciseness3/5

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

The description is very concise (one sentence), but it sacrifices necessary detail. While it states the purpose, it does not earn its place by providing additional value beyond the name.

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

Completeness2/5

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

Given the number of sibling tools and the generic parameter, the description is insufficient. It does not explain how to use the output schema or how to identify the event, leaving the agent with incomplete guidance.

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 only parameter is 'kwargs' with no description or sub-properties. The schema coverage is 0%, and the description adds no meaning to this parameter, leaving the agent without guidance on how to specify the event to delete.

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 'delete' and the resource 'calendar event', distinguishing it from sibling tools like delete_contact or delete_email. However, it could be more specific by indicating how the event is identified.

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 (e.g., respond_to_invite for meeting responses). There is no mention of prerequisites or when not to use it.

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

find_free_slotsD

Find meeting time slots

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.5/5.0
Behavior1/5

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

With no annotations, the description must disclose behavioral traits, but it omits whether the tool is read-only, mutating, requires authentication, or has side effects. The agent has zero insight into behavior.

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

Conciseness2/5

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

The description is short but severely under-specified. Brevity is wasted without essential details; it does not earn its place by being informative.

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

Completeness1/5

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

Given no annotations, a meaningless input schema, and no explanation of output (though an output schema exists), the description is completely inadequate for a tool with many siblings and potential complexity.

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 has a single 'kwargs' parameter with no type or description, and schema description coverage is 0%. The description adds no parameter meaning, leaving the agent blind to required inputs.

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

Purpose2/5

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

The description 'Find meeting time slots' is vague and barely extends the tool name. It doesn't specify what inputs are needed (e.g., attendees, date ranges) or output format, and fails to distinguish it from sibling tools like 'get_my_availability'.

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 given on when to use this tool versus alternatives. Sibling tools like 'get_my_availability' and 'list_events' likely overlap, but the description offers no comparative context.

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

forward_emailC

Forward an email

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.1/5.0
Behavior1/5

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

No annotations are present, so the description must convey behavioral traits. It does not disclose whether forwarding creates a draft or sends immediately, required permissions, or 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.

Conciseness2/5

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

While short, the description is too terse and lacks substance. It fails to earn its place as it provides no actionable information beyond the tool name.

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

Completeness1/5

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

Given the complexity of email forwarding and the lack of schema detail, the description is severely incomplete. It does not address recipient, body, or attachments, leaving critical gaps.

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 has a single 'kwargs' parameter with 0% description coverage. The description offers no details on what kwargs should contain, leaving the agent with no guidance.

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 'Forward an email' clearly states the verb and resource, distinguishing it from siblings like reply_email and send_email. However, it is terse and lacks specificity about the forwarding behavior.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like reply_email or send_draft. There are no exclusions or context for use.

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

get_attachmentC

Save an attachment to disk

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, so description must fully disclose behavior. Only mentions 'save to disk' without indicating side effects, permissions, or whether operation is idempotent. Fails to specify if attachment is deleted after save or if it requires authentication.

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

Conciseness3/5

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

One sentence, very short, but lacks essential details. It is concise but at the expense of completeness. Could be improved with brief parameter notes.

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?

Despite having an output schema, the description is nearly empty. No mention of how to identify the attachment (e.g., attachment ID), expected input format, or return value. Incomplete for a file saving operation.

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?

Single parameter 'kwargs' is an object with no schema details. Description does not explain what keys or values are needed, leaving the agent without guidance. With 0% schema coverage, this is a critical gap.

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

Purpose4/5

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

Description clearly states the action 'Save an attachment to disk', which is a specific verb-resource combination. However, it doesn't differentiate from sibling tools like get_email, and the name 'get_attachment' suggests retrieval while description implies download.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as get_email or other retrieval tools. No context about prerequisites or conditions.

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

get_contactC

Get a contact by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without mentioning read-only nature, error handling, permissions, or side effects. This is insufficient for safe invocation.

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

Conciseness3/5

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

The description is extremely concise at one sentence, but it is underspecified. It lacks critical information that would justify its brevity. Structure is simple but not effective.

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 vague schema and lack of annotations, the description does not provide enough context. It neither explains the input structure nor the expected output (though an output schema exists). The tool's purpose is clear but operational details are missing.

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% (the 'kwargs' parameter has no described properties). The description says 'by ID' but fails to specify how the ID fits into the input, leaving the agent to guess. The description adds little value beyond the schema.

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

Purpose3/5

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

The description states 'Get a contact by ID', which identifies the verb and resource. However, the input schema only has a generic 'kwargs' object without an explicit ID field, creating a mismatch between the description and the schema. This reduces clarity about how to use the tool.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like search_contacts or get_email. There are no context cues, exclusions, or scenarios mentioned, leaving the agent without decision support.

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

get_emailC

Get a full email by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility. It only states 'get', implying a read operation, but does not disclose any side effects, permissions needed, or response characteristics.

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

Conciseness4/5

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

The description is very concise at one sentence, front-loading the purpose. However, it sacrifices essential details that could be added without much length.

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 presence of an output schema, the description need not explain return values, but it lacks parameter details and usage context. The tool is simple, but the description is too minimal even for a low-complexity tool.

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

Parameters1/5

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

The input schema has one parameter 'kwargs' with no description, and the tool description mentions 'by ID' but does not explain how to pass the ID or what kwargs should contain. Schema coverage is 0%, so the description fails to add meaning.

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 'Get a full email by ID', which clearly indicates the action (get) and the resource (email) with a distinguishing detail (by ID). It differentiates from sibling tools like list_emails or copy_email that have different purposes.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_attachment or search_emails. No information about prerequisites or when not to use it.

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

get_eventB

Get a calendar event by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

No annotations provided, and the description lacks behavioral details such as whether authentication is required, error handling for missing IDs, or read-only nature. The agent gets no transparency 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, front-loaded sentence with no wasted words. It could be slightly expanded, but it earns its place for a simple get-by-ID operation.

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

Completeness2/5

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

While an output schema exists, the input parameter is poorly defined. The tool is simple, but the missing parameter guidance makes it incomplete for correct invocation.

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 has a single 'kwargs' parameter with no description (0% coverage). The description does not explain that kwargs should contain the event ID, leaving the agent uninformed about how to invoke the tool correctly.

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

Purpose5/5

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

The description 'Get a calendar event by ID' provides a clear verb ('Get'), resource ('calendar event'), and identifier ('by ID'). It effectively distinguishes this tool from siblings like create_event or update_event.

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?

No explicit guidance on when to use this tool versus alternatives, but the purpose is self-evident from the name and description. The agent can infer usage context.

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

get_mailbox_infoC

Get mailbox metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are present, so the description must carry the full burden. It does not disclose any behavioral traits such as read-only nature, authentication needs, or side effects beyond implying a read operation.

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

Conciseness2/5

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

The description is extremely short (three words). While brief, it is under-specified and does not provide enough information to be useful, sacrificing completeness for brevity.

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 presence of a complex opaque parameter (kwargs) and no annotations, the description is incomplete. It fails to explain how to use the tool or what metadata is returned, even though an output schema exists.

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 has 0% description coverage, and the description does not explain the single parameter 'kwargs'. It adds no meaning beyond the schema.

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

Purpose4/5

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

The description clearly states 'Get mailbox metadata', which is a specific verb+resource. It distinguishes from sibling tools like get_contact or get_email by focusing on mailbox-level metadata. However, the term 'metadata' is somewhat vague.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like list_folders or get_email. There is no mention of prerequisites, context, or exclusions.

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

get_my_availabilityC

Get free and busy slots

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/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 does not disclose whether the tool is read-only, requires authentication, or has any rate limits. The output schema is present but not described, missing behavioral context.

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

Conciseness2/5

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

The description is too brief at one sentence, sacrificing necessary detail. It lacks structure and front-loading of critical information like input requirements.

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?

Even with an output schema, the description fails to explain the context of 'free and busy slots'—such as time ranges, how slots are defined, or how the output relates to the input. Incomplete for effective use.

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 only parameter 'kwargs' is a generic object with no description, and the schema coverage is 0%. The description adds no meaning beyond the schema, leaving the agent unable to determine what arguments are required.

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

Purpose4/5

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

The description 'Get free and busy slots' clearly states the verb 'Get' and the resource 'free and busy slots', indicating what the tool returns. However, it does not differentiate from the sibling tool 'find_free_slots', which likely serves a similar purpose.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'find_free_slots'. There is no mention of prerequisites, time ranges, or context for the slots.

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

list_calendarsC

List calendars

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior1/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as pagination, authentication requirements, whether it lists all calendars or only accessible ones, or any side effects. The description carries the full burden and fails completely.

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

Conciseness2/5

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

While the description is extremely concise (two words), it is underspecified and does not provide enough information. Conciseness should not come at the expense of clarity or completeness.

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 simplicity and the existence of an output schema, the description could still provide context such as 'lists all calendars accessible to the user' but does not. The description is incomplete for an agent to understand the tool's functionality.

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 has one parameter 'kwargs' with no description (schema coverage 0%), and the description does not add any meaning to this parameter. The agent has no idea what 'kwargs' accepts.

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 'List calendars' clearly states the verb 'List' and resource 'calendars', which is specific and distinguishes it from sibling tools like 'list_emails' or 'list_events' by resource type. However, it does not provide any additional context or differentiation beyond the name.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool, when not to use it, or alternatives. The description is minimal and does not help the agent decide between this and related tools like 'list_events' or 'list_folders'.

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

list_emailsD

List emails in a folder

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.8/5.0
Behavior1/5

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

No annotations exist, and the description does not disclose behavioral traits like authentication requirements, whether the operation is read-only, pagination behavior, or return format. The agent is left uninformed about side effects or constraints.

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

Conciseness2/5

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

At six words, the description is extremely concise, but this brevity sacrifices critical information. It does not earn its place as every sentence should; it is under-specified rather than efficiently informative.

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

Completeness1/5

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

Given the opaque parameter schema, no annotations, many sibling tools, and an existing output schema not described, the description fails to provide enough context for correct invocation. It lacks details on folder identification, filtering, pagination, or output structure.

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 only parameter is 'kwargs' of type object, with no schema-level descriptions and 0% coverage. The description fails to explain what keys or values this parameter should contain, leaving the agent without guidance on how to construct the argument.

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

Purpose3/5

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

The description 'List emails in a folder' clearly states the action and resource, but lacks specificity about which folder or what subset of emails (e.g., all, recent, filtered). It does not distinguish from sibling tools like 'search_emails' which also deal with listing emails.

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 'search_emails', 'get_email', or 'list_folders'. The agent has no context on 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_eventsC

List calendar events in a time range

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/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 fully disclose behavior. It only says 'list events in a time range' but omits details like pagination, ordering, event detail level, or whether it returns all properties. This is insufficient 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.

Conciseness3/5

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

The description is a single sentence with no extraneous words, but it is too terse and lacks necessary details. Conciseness is achieved at the cost of completeness.

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 (catch-all parameter, likely output schema present but not described) and lack of annotations, the description is inadequate. It does not explain how to use the tool effectively or what to expect in return.

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 defines a single parameter 'kwargs' with 0% description coverage, meaning the schema provides no semantics. The description does not clarify what 'kwargs' accepts or how to specify the time range, leaving the agent with no guidance.

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 'list', the resource 'calendar events', and the scope 'in a time range'. It distinguishes from sibling tools like list_calendars (which lists calendars) and get_event (which retrieves a single event).

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 get_event, list_calendars, or find_free_slots. There is no mention of typical use cases or limitations.

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

list_foldersC

List mailbox folders

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided; description only says 'list' implying read-only, but lacks details on pagination, error states, or 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.

Conciseness2/5

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

Too brief and under-specified; a single sentence without structure or additional context, missing critical 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?

Despite having an output schema, the description fails to explain the tool's behavior or parameter usage, leaving the agent with insufficient information.

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 sole parameter 'kwargs' has no description in schema and the description adds no meaning, leaving the agent without any guidance on how to use it.

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 'List mailbox folders' with a specific verb and resource, clearly distinguishing from sibling tools like 'create_folder' and 'list_emails'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as when to use 'create_folder' or 'list_emails' instead.

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

mark_emailC

Update email flags

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior2/5

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

With no annotations, the description carries the burden of behavioral disclosure. It only states 'Update email flags', implying mutation but does not describe safety, permissions, or effects on the email. Minimal value beyond purpose.

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

Conciseness3/5

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

The description is very concise at one sentence, but it is under-specified. While brevity is appreciated, it lacks structure and important details, making it only minimally acceptable.

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 opaque input schema and no additional context, the description is incomplete. An output schema exists but does not compensate for the lack of input guidance. The description fails to provide enough information for effective tool invocation.

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 only parameter is 'kwargs' with no description inside the schema. Schema coverage is 0%. The tool description adds no meaning about what keys or values are expected, leaving the agent completely in the dark.

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

Purpose3/5

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

The description 'Update email flags' clearly states the action and resource, but it is vague regarding what flags are available and how it differs from sibling tools like 'move_email' or 'forward_email'. It lacks specificity to fully differentiate.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of context, prerequisites, or exclusions, leaving the agent without usage direction.

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

move_emailC

Move email to another folder

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavioral traits. It only states 'move' without indicating whether the operation is destructive, if it requires special permissions, or any side effects. This is insufficient for an agent to understand the tool's impact.

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

Conciseness3/5

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

The description is very short and front-loaded, but it lacks structure. It is one sentence with no additional details, which is borderline under-specification rather than 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 lack of annotations and poor parameter documentation, the description fails to provide essential context. Although an output schema exists, the description does not explain return values. The tool's simplicity does not excuse the missing details.

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 a single parameter 'kwargs' with 0% description coverage, and the description adds no clarification. The agent has no information on what 'kwargs' should contain, such as the email ID or target folder.

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 ('Move email') and the resource ('to another folder'). It distinguishes from sibling tools like 'copy_email' and 'delete_email' by specifying the operation.

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

Usage 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. For example, it does not explain when to use 'move_email' instead of 'copy_email' or 'delete_email', leaving the agent without context for selection.

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

ping_exchangeC

Check connectivity to Exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description must carry the full burden. It says 'check connectivity' but does not explain whether it makes a live API call, what the response format is, or what happens on timeout/failure. The output schema exists but is not provided here.

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

Conciseness3/5

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

The description is extremely concise—only one short sentence—but it lacks necessary detail, especially about parameters. It is not a model of efficient communication.

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

Completeness2/5

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

Given the lack of annotations and poor parameter documentation, the description is incomplete. An agent cannot reliably invoke this tool without additional context about the kwargs structure.

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 required parameter 'kwargs' is an object with zero schema description coverage (0%). The description provides no information about what keys or values 'kwargs' should contain, leaving the agent without guidance.

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 'Check connectivity to Exchange' clearly states the tool's purpose with a specific verb and resource. It distinctly differs from sibling tools like copy_email or create_contact.

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 purpose is straightforward, but no explicit guidance is given on when to use this tool versus alternatives or any preconditions. The simplicity somewhat mitigates this gap.

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

reply_emailC

Reply to an email

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/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 but only states the action. It fails to disclose behavioral traits such as whether the tool sends the reply immediately, requires authentication, or modifies the original email. No side effects or safety info.

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

Conciseness2/5

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

The description is a single short sentence, but it is under-specified. Conciseness should not come at the cost of clarity; more details are needed to make it useful.

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?

Despite having an output schema and sibling tools, the description provides no information about return values, error handling, or prerequisites. The single parameter is opaque, making the tool definition incomplete for practical use.

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 one parameter, 'kwargs', with 0% description coverage. The description does not clarify what 'kwargs' expects or how to structure it, leaving the agent unable to correctly invoke the tool.

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

Purpose4/5

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

The description 'Reply to an email' clearly states the action (reply) and resource (email), differentiating it from siblings like forward_email or create_draft. However, it does not specify whether it replies to all recipients or just the sender, leaving minor ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like forward_email or send_draft. No prerequisites or context (e.g., must have an existing email thread) are mentioned.

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

respond_to_inviteC

Respond to a calendar invite

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior2/5

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

No annotations provided, so description must carry full burden. It discloses no behavioral traits (e.g., side effects, idempotency, permissions). Only states the action without context.

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it lacks sufficient substance. It is not well-structured to convey necessary details beyond the tool's basic function.

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 likely complexity (responding to an invite with a decision), the description is incomplete. It does not mention required input fields (e.g., invite ID, response type) or expected output, despite an output schema existing.

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 has a single generic 'kwargs' parameter with no description and 0% schema coverage. The description adds no meaning to this parameter, leaving agents with no guidance on what to provide.

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

Purpose3/5

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

The description states 'Respond to a calendar invite', which gives a verb and resource, but it's vague—does not specify whether it accepts, declines, or tentatively responds. It adds minimal information beyond the tool name.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings like 'update_event' or 'create_event'. No prerequisites or exclusions provided.

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

search_contactsD

Search contacts

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.5/5.0
Behavior1/5

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

With no annotations and a minimal description, the tool's behavioral traits (e.g., search scope, pagination, output format) are entirely undisclosed. The description provides no value beyond the name.

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

Conciseness2/5

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

The description is extremely concise (two words) but fails to provide necessary context. It is underspecified rather than efficiently informative, earning a low score.

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 complexity (30 sibling tools, no annotations, no schema coverage), the description is woefully incomplete. The presence of an output schema is not leveraged, and critical details are omitted.

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 has a single parameter 'kwargs' with 0% schema description coverage. The description adds no information about how to use this parameter or what values it expects, leaving the agent blind.

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

Purpose2/5

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

The description 'Search contacts' is a tautology that restates the tool name without adding specificity. It does not differentiate from sibling tools like 'get_contact' or 'search_emails', leaving ambiguity about scope or behavior.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There are no context signals or exclusions, requiring the agent to infer usage from the name alone.

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

search_emailsD

Search emails

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.8/5.0
Behavior1/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as read-only nature, filtering capabilities, or return format. The tool's behavior remains completely opaque.

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

Conciseness2/5

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

At only two words, the description is too brief and lacks necessary detail. While concise, it sacrifices informativeness, which is not a positive attribute in this context.

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

Completeness1/5

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

Given the absence of annotations, minimal schema, and output schema not described, the description fails to provide adequate context for an AI agent to use the tool effectively. It is completely insufficient.

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 has one parameter 'kwargs' with 0% description coverage, and the description offers no explanation of its purpose or expected structure. The description adds no value beyond the schema.

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

Purpose3/5

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

The description 'Search emails' is clear as a verb+resource, indicating the tool performs a search operation on emails. However, it does not differentiate from sibling tools like 'list_emails' or 'search_contacts', lacking specificity.

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 over alternatives. For example, it does not clarify how 'search_emails' differs from 'list_emails' or 'search_contacts', leaving the AI agent without direction.

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

send_draftC

Send a draft email

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It fails to mention side effects like whether the draft is deleted after sending, permission requirements, or any irreversible changes. The description only states the action without depth.

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

Conciseness2/5

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

While the description is short, it is under-specified rather than concise. It lacks critical details that could be added without increasing length significantly. Every sentence should earn its place, but this one does not provide enough value.

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

Completeness1/5

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

Given the tool's complexity (sending an email with side effects), the description is severely incomplete. It does not explain return values, error states, or behavior changes. Even with an output schema, the description should provide context about the sending process.

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 has a single parameter 'kwargs' with no description (0% coverage), and the description adds no information about what 'kwargs' should contain. This leaves the agent completely uninformed about required arguments.

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 'Send a draft email' clearly states the verb and resource, indicating the action of sending an email that was previously drafted. It distinguishes from siblings like 'send_email' which sends a new email, though it could be more explicit about operating on an existing draft.

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 'send_email' or 'create_draft'. It does not mention prerequisites like having a draft to send, which would help agents decide appropriately.

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

send_emailC

Send a new email

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided; description fails to disclose behavioral traits like required permissions, side effects, or error conditions for a mutation operation.

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

Conciseness3/5

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

The description is very short but under-specified; it is concise but lacks structure and necessary detail.

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 that sends email, the description omits critical context like required fields, output behavior, and differences from siblings, making it incomplete despite an output schema.

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

Parameters1/5

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

Schema has a single parameter 'kwargs' with no description and 0% schema coverage. The description does not explain what keys or values are expected, adding no semantic value.

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 sends a new email, but does not differentiate it from sibling tools like forward_email or create_draft.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives such as create_draft or forward_email. No context provided.

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

update_contactC

Update a personal contact

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavioral traits. It only says 'update' implying mutation, but does not mention whether updates are partial or full, required permissions, error handling, or side effects. This is insufficient for safe invocation.

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

Conciseness2/5

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

Extremely concise (one sentence) but at the expense of completeness. While every word earns its place, the description fails to provide necessary details, making it more under-specified than efficient.

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 one parameter with zero description coverage and no annotations, the description is woefully incomplete. It does not explain the return value (though an output schema exists), valid inputs for kwargs, or any constraints. The tool cannot be safely used.

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 sole parameter 'kwargs' has no description in the schema (0% coverage), and the description provides no additional meaning. The agent has no idea what keys or values are expected, severely limiting the tool's usability.

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 'Update a personal contact' is a clear verb+resource statement. It identifies the action (update) and the target object (personal contact). However, it does not differentiate from sibling tools like update_event or update_contact's specific scope.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like create_contact, delete_contact, or search_contacts. The description lacks any context about prerequisites, required IDs, or typical use cases.

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

update_eventC

Update a calendar event

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.5/5.0
Behavior2/5

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

The description only indicates mutation ('Update') but does not disclose side effects, required permissions, or what happens with overlapping updates. Given no annotations, the description carries the full burden and falls short.

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

Conciseness2/5

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

While the description is very short, it sacrifices essential information. It is under-specified rather than concise, failing to earn its place by being unhelpful.

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?

Despite the existence of an output schema, the description does not hint at the return structure, and the parameter is opaque. For a tool that updates calendar events, this is severely incomplete.

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 only parameter 'kwargs' has no description, no properties defined in the schema, and the description adds no meaning. With 0% schema description coverage, the agent has no clue what to pass.

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

Purpose5/5

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

The description clearly states the action ('Update') and the resource ('a calendar event'), which is distinct from sibling tools like 'create_event' and 'delete_event'. It is specific and informative.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'respond_to_invite' or under what circumstances updating is appropriate. There is no mention of prerequisites or limitations.

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. 31 tool updatesv0.1.0
    • First observedcopy_email
    • First observedcreate_contact
    • First observedcreate_draft
    • First observedcreate_event
    • First observedcreate_folder
    • First observeddelete_contact
    • First observeddelete_email
    • First observeddelete_event
    • First observedfind_free_slots
    • First observedforward_email
    • First observedget_attachment
    • First observedget_contact
    • First observedget_email
    • First observedget_event
    • First observedget_mailbox_info
    • First observedget_my_availability
    • First observedlist_calendars
    • First observedlist_emails
    • First observedlist_events
    • First observedlist_folders
    • First observedmark_email
    • First observedmove_email
    • First observedping_exchange
    • First observedreply_email
    • First observedrespond_to_invite
    • First observedsearch_contacts
    • First observedsearch_emails
    • First observedsend_draft
    • First observedsend_email
    • First observedupdate_contact
    • First observedupdate_event

TDQS

C2.6/5.0

Scored across 31 tools

Disambiguation4/5

Most tools have distinct purposes, but `find_free_slots` and `get_my_availability` overlap in functionality (both deal with availability). Otherwise, email, calendar, and contact operations are clearly separated.

Naming Consistency5/5

All tool names follow a consistent `verb_noun` pattern in snake_case (e.g., `create_event`, `list_emails`, `send_email`). No mixing of conventions.

Tool Count3/5

With 31 tools, the server covers email, calendar, contacts, and folders comprehensively. However, the count is on the higher side for a single server, exceeding the typical 3–15 range, though still manageable.

Completeness4/5

The tool set provides CRUD for emails, events, contacts, and folders, plus search, send, reply, forward, and move. Minor gaps exist (e.g., no attachment creation, no folder update), but core workflows are well-covered.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for any Microsoft Exchange / OWA deployment. Gives LLM agents access to email, calendar, directory search, folders, availability, and meeting analytics via 30 tools.
    30
    26 PyPI
    10
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A local MCP server for on-premises Microsoft Exchange, connecting via EWS and NTLM. It provides mail, template, availability, and calendar workflow tools through stdio, with draft-first safety and Windows Credential Manager integration.
    7
    MIT