Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
$topde 25 est injectée, avec une limite maximale de 100. - Les messages de chat sont limités à 10 par demande.
- Les
$skipparamètres de requête et$skiptokensont 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
base64ContentBase64 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-Afteren-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.