Work IQ MCP ツール リファレンス

Work IQ MCP サーバーは、 モデルコンテキストプロトコル (MCP) を介して 10 個のツールを公開します。 この記事では、各ツールの目的、パラメーター、使用例など、リファレンスを提供します。

Work IQ MCP は、ツールが Microsoft Graph リソース パスにアクセスするときに、Microsoft Entra 認証とサインインしているユーザーの Microsoft 365 アクセス許可を使用します。 個別のテナント ポリシー レイヤーが各ツール要求を評価し、既定で変更操作をブロックします。 管理者は、テナント ポリシーを通じて、サポートされている作成、更新、削除、およびアクション要求を有効にすることができます。 詳細については、 Work IQ MCP のポリシーガバナンスを参照してください。

エンティティ ツール

エンティティ ツールは、Microsoft 365 リソースに対する CRUD 操作とアクションを提供します。 これらのツールは、 Microsoft Graph エンドポイントにマップされる相対リソース パスで動作します。

フェッチ

リソース パスで 1 つ以上のエンティティを読み取ります。 複数のパスを並列でフェッチできます。

パラメーター

パラメーター 必須 説明
entityUrls 文字列配列 はい フェッチする相対リソース パス ( /me/messages/me/events/{event-id} など)
agentId 文字列 いいえ 将来使用するために予約されています。

応答

正常な応答には、次のプロパティを持つオブジェクトの配列である results プロパティが含まれています。 要求の entityUrls パラメーターには、リソース パスごとに 1 つのオブジェクトがあります。

プロパティ 説明
data object Microsoft Graph によって返される JSON オブジェクト。
statusCode integer 応答の HTTP 状態コード。

注:

  • 収集結果には、テナントごとのポリシー制限が適用されます。 値を指定しない場合は、既定の $top 25 が挿入され、最大値は 100 です。
  • Chat メッセージの上限は、要求あたり 10 個です。
  • $skip および $skiptoken クエリ パラメーターがブロックされます。

要求

▶ インタラクティブ デモでこの例を開きます

{
  "method": "tools/call",
  "params": {
    "name": "fetch",
    "arguments": {
      "entityUrls": [
        "/me/messages"
      ]
    }
  }
}
応答
{
  "results": [
    {
      "data": {
        "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('0c6bc4a2-337b-4672-9bcd-6aa53af1b02a')/messages(id,subject,from,receivedDateTime,isRead,importance)",
        "value": [
          {
            "@odata.etag": "W/\"CQAAABYAAADltuSvpI1YRKDFG38ihSmWAABepTg8\"",
            "id": "AAMkADk0...",
            "receivedDateTime": "2026-05-31T15:40:44Z",
            "subject": "Your weekly PIM digest for Contoso",
            "importance": "normal",
            "isRead": false,
            "from": {
              "emailAddress": {
                "name": "Microsoft Security",
                "address": "MSSecurity-noreply@microsoft.com"
              }
            }
          },
          {
            "@odata.etag": "W/\"CQAAABYAAADltuSvpI1YRKDFG38ihSmWAAA/eZg0\"",
            "id": "AAMkADk0...",
            "receivedDateTime": "2026-05-26T07:39:09Z",
            "subject": "Microsoft Entra ID Protection Weekly Digest",
            "importance": "normal",
            "isRead": false,
            "from": {
              "emailAddress": {
                "name": "Microsoft Security",
                "address": "MSSecurity-noreply@microsoft.com"
              }
            }
          }
        ],
        "@odata.nextLink": "https://graph.microsoft.com/v1.0/me/messages?%24select=id%2csubject%2cfrom%2creceivedDateTime%2cisRead%2cimportance&%24top=10&%24skip=10"
      },
      "statusCode": 200
    }
  ]
}

fetch_blob

相対的な Work IQ パスからドキュメント、画像、Office ファイルなどのバイナリ コンテンツをフェッチします。 コンテンツは、メタデータを含む Base64 エンコード文字列として返されます。

パラメーター

パラメーター 必須 説明
path string はい バイナリ コンテンツへの相対パス ( /drives/{drive-id}/items/{item-id}/contentなど)
format 文字列 いいえ ファイル変換形式 (例: pdf)。 Microsoft Graph $format パラメーターを受け入れるドライブコンテンツ エンドポイントでのみサポートされます。
agentId 文字列 いいえ 将来使用するために予約されています。

応答

正常な応答は、MCP structuredContent フィールドを介して次のプロパティを公開します。

プロパティ 説明
statusCode integer 応答の HTTP 状態コード。
contentType string 返されるコンテンツの MIME タイプ。
blobName string ファイル名 (使用可能な場合)。
sizeBytes integer 生コンテンツのサイズ (バイト単位)。
base64Content string Base64 としてエンコードされたバイナリ コンテンツ。

注:

  • 既定の生ファイルの制限は 4 MB で、パスごとに構成できます。
  • クライアントは元のバイトを回復するために Base64 デコード base64Content 必要があります。
  • BLOB ペイロードは、MCP のテキスト コンテンツ フィールドで重複しません。 クライアントはそれを structuredContent から読み取る必要があります。
  • 構成された制限を超えるファイルは、構成された制限を含む MCP ツール エラーを返します。BLOB コンテンツは返されません。

要求

▶ インタラクティブ デモでこの例を開きます

{
  "method": "tools/call",
  "params": {
    "name": "fetch_blob",
    "arguments": {
      "path": "/me/drive/items/01ABCDEF/content"
    }
  }
}
応答
{
  "structuredContent": {
    "statusCode": 200,
    "contentType": "text/plain",
    "blobName": "notes.txt",
    "sizeBytes": 14,
    "base64Content": "SGVsbG8sIFdvcmtJUSE="
  }
}

create_entity

コレクションに新しいエンティティを作成します。

パラメーター

パラメーター 必須 説明
parentUrl string はい コレクションの相対リソース パス ( /me/events/me/messages など)。
jsonBody string はい 作成するエンティティ データ。リソース スキーマと一致します。 このプロパティは、JSON オブジェクトではなく、JSON でエンコードされた文字列である必要があります。
agentId 文字列 いいえ 将来使用するために予約されています。

応答

正常な応答には、次のプロパティを持つ structuredContent プロパティのオブジェクトが含まれています。

プロパティ 説明
data object Microsoft Graph によって返される JSON オブジェクト。
statusCode integer 応答の HTTP 状態コード。

要求

▶ インタラクティブ デモでこの例を開きます

{
  "method": "tools/call",
  "params": {
    "name": "create_entity",
    "arguments": {
      "parentUrl": "/me/messages",
      "jsonBody": "{ \"subject\": \"Hello world!\" }"
    }
  }
}
応答
{
  "statusCode": 201,
  "data": {
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('0c6bc4a2-337b-4672-9bcd-6aa53af1b02a')/messages/$entity",
    "@odata.etag": "W/\"CQAAABYAAADltuSvpI1YRKDFG38ihSmWAABlFT7g\"",
    "id": "AAMkADk0...",
    "createdDateTime": "2026-06-01T17:32:39Z",
    "lastModifiedDateTime": "2026-06-01T17:32:39Z",
    "changeKey": "CQAAABYAAADltuSvpI1YRKDFG38ihSmWAABlFT7g",
    "categories": [],
    "receivedDateTime": "2026-06-01T17:32:39Z",
    "sentDateTime": "2026-06-01T17:32:39Z",
    "hasAttachments": false,
    "internetMessageId": "<CH7PR03MB79063B75F29F929523CCC68FAE152@CH7PR03MB7906.namprd03.prod.outlook.com>",
    "subject": "Hello world!",
    "bodyPreview": "",
    "importance": "normal",
    "parentFolderId": "AQMkADk0...",
    "conversationId": "AAQkADk0...",
    "conversationIndex": "AQHc8eykdVXKjf4ytUio+dQPqWG95A==",
    "isDeliveryReceiptRequested": false,
    "isReadReceiptRequested": false,
    "isRead": true,
    "isDraft": true,
    "inferenceClassification": "focused",
    "body": {
      "contentType": "text",
      "content": ""
    },
    "toRecipients": [],
    "ccRecipients": [],
    "bccRecipients": [],
    "replyTo": [],
    "flag": {
      "flagStatus": "notFlagged"
    }
  }
}

update_entity

既存のエンティティを Updates します。

パラメーター

パラメーター 必須 説明
entityUrl string はい エンティティへの相対パス ( /me/messages/{message-id}など)。
jsonBody string はい 作成するエンティティ データ。リソース スキーマと一致します。 このプロパティは、JSON オブジェクトではなく、JSON でエンコードされた文字列である必要があります。
agentId 文字列 いいえ 将来使用するために予約されています。

応答

正常な応答には、次のプロパティを持つ structuredContent プロパティのオブジェクトが含まれています。

プロパティ 説明
data object Microsoft Graph によって返される JSON オブジェクト。
statusCode integer 応答の HTTP 状態コード。

要求

▶ インタラクティブ デモでこの例を開きます

{
  "method": "tools/call",
  "params": {
    "name": "update_entity",
    "arguments": {
      "entityUrl": "/me/messages/AAMkADk0...",
      "jsonBody": "{ \"subject\": \"Updated: Hello world!\" }"
    }
  }
}
応答
{
  "statusCode": 200,
  "data": {
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('0c6bc4a2-337b-4672-9bcd-6aa53af1b02a')/messages/$entity",
    "@odata.etag": "W/\"CQAAABYAAADltuSvpI1YRKDFG38ihSmWAABlFT7g\"",
    "id": "AAMkADk0...",
    "createdDateTime": "2026-06-01T17:32:39Z",
    "lastModifiedDateTime": "2026-06-01T17:32:39Z",
    "changeKey": "CQAAABYAAADltuSvpI1YRKDFG38ihSmWAABlFT7g",
    "categories": [],
    "receivedDateTime": "2026-06-01T17:32:39Z",
    "sentDateTime": "2026-06-01T17:32:39Z",
    "hasAttachments": false,
    "internetMessageId": "<CH7PR03MB79063B75F29F929523CCC68FAE152@CH7PR03MB7906.namprd03.prod.outlook.com>",
    "subject": "Updated: Hello world!",
    "bodyPreview": "",
    "importance": "normal",
    "parentFolderId": "AQMkADk0...",
    "conversationId": "AAQkADk0...",
    "conversationIndex": "AQHc8eykdVXKjf4ytUio+dQPqWG95A==",
    "isDeliveryReceiptRequested": false,
    "isReadReceiptRequested": false,
    "isRead": true,
    "isDraft": true,
    "inferenceClassification": "focused",
    "body": {
      "contentType": "text",
      "content": ""
    },
    "toRecipients": [],
    "ccRecipients": [],
    "bccRecipients": [],
    "replyTo": [],
    "flag": {
      "flagStatus": "notFlagged"
    }
  }
}

delete_entity

エンティティを削除します。

パラメーター

パラメーター 必須 説明
entityUrl string はい 削除するエンティティへの相対リソース パス ( /me/messages/{id} など)
agentId 文字列 いいえ 質問のルーティング先となる特定のエージェントの ID。 省略した場合、既定では組み込みの Microsoft 365 Copilot エージェントになります。

応答

成功した応答には、[structuredContent] フィールドに 204 に設定されたstatusCodeプロパティが含まれています。

要求

▶ インタラクティブ デモでこの例を開きます

{
  "method": "tools/call",
  "params": {
    "name": "delete_entity",
    "arguments": {
      "entityUrl": "/me/messages/AAMkADk0MDkyMzM3LTlmNzAtNDhmM...."
    }
  }
}
応答
{
  "statusCode": 204
}

do_action

メールの送信、アイテムのコピー、移動などの副作用のあるアクションを実行します。

パラメーター

パラメーター 必須 説明
actionUrl string はい アクションの相対パス ( /me/messages/{message-id}/send など)。
jsonBody 文字列 いいえ 必要な場合は、アクションの JSON 本文。 このプロパティは、JSON オブジェクトではなく、JSON でエンコードされた文字列である必要があります。
agentId 文字列 いいえ 将来使用するために予約されています。

応答

正常な応答には、次のプロパティを持つ structuredContent プロパティのオブジェクトが含まれています。

プロパティ 説明
data object Microsoft Graph によって返される JSON オブジェクト (存在する場合)。
statusCode integer 応答の HTTP 状態コード。

要求

▶ インタラクティブ デモでこの例を開きます

{
  "method": "tools/call",
  "params": {
    "name": "do_action",
    "arguments": {
      "actionUrl": "/me/messages/AAMkADk0.../send"
    }
  }
}
応答
{
  "statusCode": 202
}

call_function

Microsoft Graph 関数を呼び出して、スケジュール、差分、検索結果などの派生データを計算します。

パラメーター

パラメーター 必須 説明
functionUrl string はい 関数の相対パス ( /me/calendarview など)。
agentId 文字列 いいえ 将来使用するために予約されています。

応答

正常な応答には、次のプロパティを持つ structuredContent プロパティのオブジェクトが含まれています。

プロパティ 説明
data object Microsoft Graph によって返される JSON オブジェクト。
statusCode integer 応答の HTTP 状態コード。

要求

▶ インタラクティブ デモでこの例を開きます

{
  "method": "tools/call",
  "params": {
    "name": "call_function",
    "arguments": {
      "parentUrl": "/me/calendarView?startdatetime=2026-06-01T17:51:49.607Z&enddatetime=2026-06-08T17:51:49.607Z"
    }
  }
}
応答
{
  "data": {
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('0c6bc4a2-337b-4672-9bcd-6aa53af1b02a')/calendarView(id,subject,start,end,location,organizer,isAllDay)",
    "value": [
      {
        "@odata.etag": "W/\"5bbkr6SNWESgxRt/IoUplgAAKcCTsQ==\"",
        "id": "AAMkADk0...",
        "subject": "Sales and Marketing Sync",
        "isAllDay": false,
        "start": {
          "dateTime": "2026-06-08T12:30:00.0000000",
          "timeZone": "UTC"
        },
        "end": {
          "dateTime": "2026-06-08T13:00:00.0000000",
          "timeZone": "UTC"
        },
        "location": {
          "displayName": "Sales and Marketing / General",
          "locationType": "default",
          "uniqueId": "Sales and Marketing / General",
          "uniqueIdType": "private"
        },
        "organizer": {
          "emailAddress": {
            "name": "Sales and Marketing",
            "address": "SalesandMarketing@contoso.com"
          }
        }
      }
    ],
    "@odata.nextLink": "https://graph.microsoft.com/v1.0/me/calendarView?startdatetime=2026-06-01T17%3a51%3a49.607Z&enddatetime=2026-06-08T17%3a51%3a49.607Z&%24select=id%2csubject%2cstart%2cend%2clocation%2corganizer%2cisAllDay&%24top=10&%24skip=10"
  },
  "statusCode": 200
}

Copilot ツール

Copilot ツールは、Microsoft 365 Copilot を呼び出し、使用可能なエージェントを検出することで、自然言語インテリジェンスを提供します。

質問する

Microsoft 365 Copilot (または特定のエージェント) に、ユーザーのデータに関する自然言語の質問をします。 agentIdを指定すると、要求はその特定のエージェントに送られます。 省略すると、要求は組み込みの Microsoft 365 Copilot エージェントに移動します。

パラメーター

パラメーター 必須 説明
question string はい 自然言語で尋ねる質問
agentId 文字列 いいえ 質問のルーティング先となる特定のエージェントの ID。 省略した場合、既定では組み込みの Microsoft 365 Copilot エージェントになります。
fileUrls 文字列配列 不要 コンテキストとして使用する OneDrive または SharePoint ファイルの URL の配列。
conversationId 文字列 いいえ 既存の会話の会話 ID。 指定された場合、この要求により既存の会話が続行されます。
timeZone 文字列 いいえ ユーザーの現在の UTC オフセットに一致する IANA タイム ゾーン識別子。 省略すると、UTC で時間が返されます。

応答

正常な応答には、TextContent オブジェクトの text プロパティに JSON 文字列が含まれています。 文字列には以下のプロパティが含まれています。

プロパティ 説明
response string Microsoft 365 Copilot または指定されたエージェントからの応答。
conversationId string 会話 ID。 会話を続行するには、後続の要求の conversationId でこの ID を指定します。

要求

▶ インタラクティブ デモでこの例を開きます

{
  "method": "tools/call",
  "params": {
    "name": "ask",
    "arguments": {
      "question": "Do I have any meetings today?"
    }
  }
}
応答
{
  "response": "You have **4 meetings scheduled today**. Here\\u2019s a clear view of your day:...",
  "conversationId": "cc7d6f5202cb4c5b814b120440e48ede"
}

list_agents

ask ツールで使用できるエージェントを一覧表示します。 使用可能なエージェントの JSON 配列を返します。組み込みの Microsoft 365 Copilot エージェントは常に含まれます。

パラメーター

このツールはパラメーターを取りません。

応答

正常な応答には、TextContent オブジェクトの text プロパティに JSON 文字列が含まれています。 文字列には以下のプロパティが含まれています。

プロパティ 説明
agentId string エージェントの一意識別子。
name string エージェントの表示名。
provider string エージェントの発行元。

要求

▶ インタラクティブ デモでこの例を開きます

{
  "method": "tools/call",
  "params": {
    "name": "list_agent",
    "arguments": {}
  }
}
応答
[
  {
    "agentId": "bizchat-as-gpt-scenario",
    "name": "Microsoft Copilot",
    "provider": "Microsoft"
  }
]

スキーマ ツール

スキーマ ツールを使用すると、利用可能な API パスとその OpenAPI スキーマをランタイムで検出できます。 これらのツールを使用すると、エージェントは、大きなスキーマ定義を事前にコンテキストにロードすることなく、使用可能な操作を検出できます。

get_schema

パスと操作の種類によって識別される、特定の操作の OpenAPI スキーマを取得します。

注:

現在、Microsoft Graph v1.0 スキーマのみを使用できます。

パラメーター

パラメーター 必須 説明
operationIds 文字列 いいえ スキーマを取得する API の操作 ID ( me.CreateMessages など)。 両方ではなく、 operationIds または path を使用してください。
path 文字列 いいえ スキーマを取得する API パス ( /me/messagesなど)。 両方ではなく、 operationIds または path を使用してください。
operationType string はい 操作の種類。 有効な値は、fetchcreateupdate です。
format 文字列 いいえ 目的の出力形式。 有効な値は、 jsonschema (JSON スキーマ 形式) と typescript (TypeScript 定義) です。 省略すると、JSON スキーマが返されます。
backend 文字列 いいえ 将来使用するために予約されています。
agentId 文字列 いいえ 将来使用するために予約されています。

応答

正常な応答には、TextContent オブジェクトの text プロパティに JSON スキーマまたは TypeScript 定義が含まれています。

要求

▶ インタラクティブ デモでこの例を開きます

{
  "method": "tools/call",
  "params": {
    "name": "get_schema",
    "arguments": {
      "path": "/me/messages",
      "operationType": "fetch"
    }
  }
}
応答
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "microsoft.graph.messageCollectionResponse",
  "type": "object",
  "properties": {
    "value": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/microsoft.graph.message"
      }
    }
  },
  "$defs": {
    ...
  }
}

search_paths

プレフィックスまたは正規表現フィルターで利用可能な API パスを検索します。 このツールを使用して、他のツールを呼び出す前に、使用可能なリソース パスを検出します。

注:

現在、Microsoft Graph v1.0 パスのみを使用できます。

パラメーター

パラメーター 必須 説明
filter string はい 一致する API パス ( messages.*calendar.* など) を検索するためのプレフィックスまたは正規表現パターン
backend 文字列 いいえ 将来使用するために予約されています。
agentId 文字列 いいえ 将来使用するために予約されています。

応答

成功した応答には、[structuredContent] フィールドに paths プロパティが含まれています。 このプロパティは、次のプロパティを持つオブジェクトの配列です。

プロパティ 説明
path string 相対 API パス。
operations 文字列配列 パスでサポートされている操作。 有効な値は、fetchcreateupdate です。

要求

▶ インタラクティブ デモでこの例を開きます

{
  "method": "tools/call",
  "params": {
    "name": "search_paths",
    "arguments": {
      "filter": "messages"
    }
  }
}
応答
{
  "paths": [
    {
      "path": "/admin/serviceAnnouncement/messages",
      "operations": [
        "fetch",
        "create"
      ]
    },
    {
      "path": "/admin/serviceAnnouncement/messages/{serviceUpdateMessage-id}",
      "operations": [
        "fetch",
        "create",
        "update"
      ]
    },
    ...
  ]
}

許可されるリソース パス

エンティティ ツールは相対リソース パスで動作します。 既定では、次のパス プレフィックスを使用できます。

  • /me/
  • /users/
  • /sites/

次のパス セグメントはブロックされます。

  • /authentication/
  • /servicePrincipals/

注:

許可されるパスとブロックされるパスの完全な一覧は、テナントごとのポリシー構成に依存し、異なる場合があります。

エラー処理

ツールの呼び出しが失敗すると、Work IQ MCP サーバーは次の情報を含むエラーを返します。

  • ダウンストリーム サービスからの HTTP 状態コード
  • Retry-After 調整応答のヘッダー (Microsoft Graph から渡される)
  • トラブルシューティング用の関連付け ID を要求する

サーバーは自動再試行を実行しません。 MCP クライアントはエラーを受信し、クライアント側の再試行を決定します。