Référence de l’outil WorkIQ MCP

Le serveur MCP Work IQ expose 10 outils via le protocole MCP (Model Context Protocol). Cet article fournit une référence pour chaque outil, y compris son objectif, ses paramètres et des exemples d’utilisation.

Work IQ MCP utilise l’authentification Microsoft Entra et les autorisations Microsoft 365 de l’utilisateur connecté lorsque ses outils accèdent aux chemins de ressources Microsoft Graph. Une couche de stratégie de locataire distincte évalue chaque demande d’outil et bloque les opérations de mutation par défaut. Les administrateurs peuvent activer les demandes de création, de mise à jour, de suppression et d’action prises en charge par le biais de la stratégie de locataire. Pour plus d’informations, voir Gouvernance des stratégies pour Work IQ MCP.

Outils d’entité

Les outils d’entité fournissent des opérations et des actions CRUD sur les ressources Microsoft 365. Ces outils fonctionnent sur des chemins de ressources relatifs qui correspondent aux points de terminaison Microsoft Graph .

Récupérer (fetch)

Lit une ou plusieurs entités par chemin de ressource. Prend en charge l’extraction de plusieurs chemins en parallèle.

Paramètres

Paramètre Type Requis Description
entityUrls tableau de chaînes Oui Chemins d’accès aux ressources relatives à extraire (par exemple, /me/messages/me/events/{event-id}, )
agentId string Non Réservé à une utilisation future.

Réponse

Une réponse réussie contient une results propriété qui est un tableau d’objets ayant les propriétés suivantes. Il y a un objet pour chaque chemin d’accès de ressource dans le entityUrls paramètre de la demande.

Propriété Type Description
data objet Objet JSON renvoyé par Microsoft Graph.
statusCode entier Code de status HTTP pour la réponse.

Remarque

  • Les limites de stratégie par locataire s’appliquent aux résultats de la collecte. Si vous ne spécifiez pas de valeur, une valeur par défaut $top de 25 est injectée, avec une limite maximale de 100.
  • Les messages de chat sont limités à 10 par demande.
  • Les $skip paramètres de requête et $skiptoken sont bloqués.

Exemple

Demande

▶ Ouvrez cet exemple dans la démo interactive

{
  "method": "tools/call",
  "params": {
    "name": "fetch",
    "arguments": {
      "entityUrls": [
        "/me/messages"
      ]
    }
  }
}
Réponse
{
  "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

Récupère le contenu binaire, tel que des documents, des images et des fichiers Office à partir d’un chemin de QI professionnel relatif. Le contenu est renvoyé sous la forme d’une chaîne codée en Base64 avec des métadonnées.

Paramètres

Paramètre Type Requis Description
path string Oui Chemin d’accès relatif au contenu binaire (par exemple, /drives/{drive-id}/items/{item-id}/content)
format string Non Format de conversion de fichier (par exemple, pdf). Pris en charge uniquement par les points de terminaison de contenu de lecteur qui acceptent le paramètre Microsoft Graph $format .
agentId string Non Réservé à une utilisation future.

Réponse

Une réponse réussie expose les propriétés suivantes via le champ MCP structuredContent .

Propriété Type Description
statusCode entier Code de status HTTP pour la réponse.
contentType string Type MIME du contenu renvoyé.
blobName string Nom du fichier, s’il est disponible.
sizeBytes entier Taille du contenu brut en octets.
base64Content string Le contenu binaire encodé en Base64.

Remarque

  • La limite par défaut des fichiers bruts est de 4 Mo et peut être configurée par chemin d’accès.
  • Les clients doivent décoder base64Content Base64 pour récupérer les octets d’origine.
  • La charge utile de l’objet blob n’est pas dupliquée dans le champ de contenu de texte MCP. Les clients doivent le lire à partir de structuredContent.
  • Un fichier dépassant la limite configurée retourne une erreur d’outil MCP contenant la limite configurée ; Il ne renvoie pas de contenu BLOB.

Exemple

Demande

▶ Ouvrez cet exemple dans la démo interactive

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

create_entity

Crée une entité dans une collection.

Paramètres

Paramètre Type Requis Description
parentUrl string Oui Chemin d’accès de ressource relatif pour la collection (par exemple, /me/events/me/messages).
jsonBody string Oui Données d’entité à créer, correspondant au schéma de ressource. Cette propriété doit être une chaîne codée en JSON, et non un objet JSON.
agentId string Non Réservé à une utilisation future.

Réponse

Une réponse réussie contient un objet dans la structuredContent propriété avec les propriétés suivantes.

Propriété Type Description
data objet Objet JSON renvoyé par Microsoft Graph.
statusCode entier Code de status HTTP pour la réponse.

Exemple

Demande

▶ Ouvrez cet exemple dans la démo interactive

{
  "method": "tools/call",
  "params": {
    "name": "create_entity",
    "arguments": {
      "parentUrl": "/me/messages",
      "jsonBody": "{ \"subject\": \"Hello world!\" }"
    }
  }
}
Réponse
{
  "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

Mises à jour d’une entité existante.

Paramètres

Paramètre Type Requis Description
entityUrl string Oui Chemin d’accès relatif à l’entité (par exemple, /me/messages/{message-id}).
jsonBody string Oui Données d’entité à créer, correspondant au schéma de ressource. Cette propriété doit être une chaîne codée en JSON, et non un objet JSON.
agentId string Non Réservé à une utilisation future.

Réponse

Une réponse réussie contient un objet dans la structuredContent propriété avec les propriétés suivantes.

Propriété Type Description
data objet Objet JSON renvoyé par Microsoft Graph.
statusCode entier Code de status HTTP pour la réponse.

Exemple

Demande

▶ Ouvrez cet exemple dans la démo interactive

{
  "method": "tools/call",
  "params": {
    "name": "update_entity",
    "arguments": {
      "entityUrl": "/me/messages/AAMkADk0...",
      "jsonBody": "{ \"subject\": \"Updated: Hello world!\" }"
    }
  }
}
Réponse
{
  "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

Supprime une entité.

Paramètres

Paramètre Type Requis Description
entityUrl string Oui Chemin de ressource relatif à l’entité à supprimer (par exemple, /me/messages/{id})
agentId string Non ID d’un agent spécifique vers lequel acheminer la question. Si cette option est omise, il s’agit par défaut de l’agent Microsoft 365 Copilot intégré.

Réponse

Une réponse réussie contient une statusCode propriété définie sur 204 dans le structuredContent champ.

Exemple

Demande

▶ Ouvrez cet exemple dans la démo interactive

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

do_action

Exécute une action d’effet secondaire telle que l’envoi de courrier, la copie ou le déplacement d’éléments.

Paramètres

Paramètre Type Requis Description
actionUrl string Oui Chemin d’accès relatif de l’action (par exemple, /me/messages/{message-id}/send).
jsonBody string Non Corps JSON de l’action, si nécessaire. Cette propriété doit être une chaîne codée en JSON, et non un objet JSON.
agentId string Non Réservé à une utilisation future.

Réponse

Une réponse réussie contient un objet dans la structuredContent propriété avec les propriétés suivantes.

Propriété Type Description
data objet Objet JSON renvoyé par Microsoft Graph, le cas échéant.
statusCode entier Code de status HTTP pour la réponse.

Exemple

Demande

▶ Ouvrez cet exemple dans la démo interactive

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

call_function

Appelle une fonction Microsoft Graph pour calculer des données dérivées telles que des planifications, des deltas ou des résultats de recherche.

Paramètres

Paramètre Type Requis Description
functionUrl string Oui Chemin d’accès relatif de la fonction (par exemple, /me/calendarview).
agentId string Non Réservé à une utilisation future.

Réponse

Une réponse réussie contient un objet dans la structuredContent propriété avec les propriétés suivantes.

Propriété Type Description
data objet Objet JSON renvoyé par Microsoft Graph.
statusCode entier Code de status HTTP pour la réponse.

Exemple

Demande

▶ Ouvrez cet exemple dans la démo interactive

{
  "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"
    }
  }
}
Réponse
{
  "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
}

Outils Copilot

Les outils Copilot fournissent une intelligence en langage naturel en appelant Microsoft 365 Copilot et en découvrant les agents disponibles.

Demander

Pose à Microsoft 365 Copilot (ou à un agent spécifique) une question en langage naturel sur les données de l’utilisateur. Lorsque vous fournissez un agentId, la demande est envoyée à cet agent spécifique. Lorsque vous l’omettez, la demande est envoyée à l’agent intégré de Microsoft 365 Copilot.

Paramètres

Paramètre Type Requis Description
question string Oui Question en langage naturel à poser
agentId string Non ID d’un agent spécifique vers lequel acheminer la question. Si cette option est omise, il s’agit par défaut de l’agent Microsoft 365 Copilot intégré.
fileUrls tableau de chaînes Non Tableau d’URL de fichiers OneDrive ou SharePoint à utiliser comme contexte.
conversationId string Non ID de conversation d’une conversation existante. Si elle est fournie, cette demande poursuit la conversation existante.
timeZone string Non Identifiant de fuseau horaire IANA correspondant au décalage UTC actuel de l’utilisateur. Si elle est omise, l’heure est renvoyée au format UTC.

Réponse

Une réponse réussie contient une chaîne JSON dans la text propriété d’un objet TextContent . La chaîne inclut les propriétés suivantes.

Propriété Type Description
response string Réponse de Microsoft 365 Copilot ou de l’agent spécifié.
conversationId string ID de conversation. Fournissez cet ID dans les conversationId demandes suivantes pour continuer la conversation.

Exemple

Demande

▶ Ouvrez cet exemple dans la démo interactive

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

list_agents

Répertorie les agents disponibles que vous pouvez utiliser avec l’outil ask . Renvoie un tableau JSON d’agents disponibles, et l’agent Microsoft 365 Copilot intégré est toujours inclus.

Paramètres

Cet outil ne prend aucun paramètre.

Réponse

Une réponse réussie contient une chaîne JSON dans la text propriété d’un objet TextContent . La chaîne inclut les propriétés suivantes.

Propriété Type Description
agentId string Identifiant unique de l’agent.
name string Nom d’affichage de l’agent.
provider string Éditeur de l’agent.

Exemple

Demande

▶ Ouvrez cet exemple dans la démo interactive

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

Outils de schéma

Les outils de schéma permettent la découverte à l’exécution des chemins d’accès d’API disponibles et de leurs schémas OpenAPI. Ces outils permettent aux agents de découvrir quelles opérations sont disponibles sans charger à l’avance de grandes définitions de schéma dans leur contexte.

get_schema

Récupère le schéma OpenAPI d’une opération spécifique, identifié par chemin d’accès et type d’opération.

Remarque

Actuellement, seuls les schémas Microsoft Graph v1.0 sont disponibles.

Paramètres

Paramètre Type Requis Description
operationIds string Non ID d’opération de l’API pour obtenir le schéma (par exemple, me.CreateMessages). Utilisez operationIds ou path, pas les deux.
path string Non Chemin d’accès de l’API pour obtenir le schéma (par exemple, /me/messages). Utilisez operationIds ou path, pas les deux.
operationType string Oui Type d’opération. Les valeurs valides sont fetch, create et update.
format string Non Format de sortie souhaité. Les valeurs valides sont jsonschema (format de schéma JSON ) et typescript (définitions TypeScript). S’il est omis, le schéma JSON est renvoyé.
backend string Non Réservé à une utilisation future.
agentId string Non Réservé à une utilisation future.

Réponse

Une réponse réussie contient le schéma JSON ou les définitions TypeScript dans la text propriété d’un objet TextContent .

Exemple

Demande

▶ Ouvrez cet exemple dans la démo interactive

{
  "method": "tools/call",
  "params": {
    "name": "get_schema",
    "arguments": {
      "path": "/me/messages",
      "operationType": "fetch"
    }
  }
}
Réponse
{
  "$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

Recherche les chemins d’accès d’API disponibles par préfixe ou filtre d’expression régulière. Utilisez cet outil pour découvrir les chemins de ressource disponibles avant d’appeler d’autres outils.

Remarque

Actuellement, seuls les chemins d’accès à Microsoft Graph v1.0 sont disponibles.

Paramètres

Paramètre Type Requis Description
filter string Oui Un préfixe ou un modèle regex pour rechercher des chemins d’accès d’API correspondants (par exemple, messages ou .*calendar.*)
backend string Non Réservé à une utilisation future.
agentId string Non Réservé à une utilisation future.

Réponse

Une réponse réussie contient une paths propriété dans le structuredContent champ. Cette propriété est un tableau d’objets ayant les propriétés suivantes.

Propriété Type Description
path string Chemin d’accès relatif de l’API.
operations tableau de chaînes Opérations prises en charge pour le chemin d’accès. Les valeurs valides sont fetch, create et update.

Exemple

Demande

▶ Ouvrez cet exemple dans la démo interactive

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

Chemins d’accès aux ressources autorisés

Les outils d’entité fonctionnent avec des chemins de ressources relatifs. Par défaut, les préfixes de chemin d’accès suivants sont autorisés :

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

Les segments de chemin suivants sont bloqués :

  • /authentication/
  • /servicePrincipals/

Remarque

La liste complète des chemins d’accès autorisés et bloqués dépend de la configuration de la stratégie par locataire et peut varier.

Gestion des erreurs

Lorsqu’un appel d’outil échoue, le serveur MCP Work IQ renvoie des erreurs avec les informations suivantes :

  • Code d’status HTTP du service en aval
  • Retry-After en-têtes pour la limitation des réponses (transmises à partir de Microsoft Graph)
  • Demander des ID de corrélation pour la résolution des problèmes

Le serveur n’effectue pas de tentatives automatiques. Le client MCP reçoit des erreurs et prend des décisions de nouvelle tentative côté client.