This file lists the tools that the Microsoft 365 Copilot work chat can use when outlook-cli copilot ask or the copilot_ask MCP tool sends it a prompt.
Source: Copilot gave this list itself, in the work chat, on 2026-10-22. The list is self-reported. The real tool names and parameters can be different. The tenant and the licence can add or remove tools, and Microsoft can change them at any time. Use this list to understand what a prompt can cause. Do not use it as an API reference.
copilot_ask is not read-only. Copilot can create drafts and events, post Teams messages, delete files, share files and change calendars. A prompt to copilot ask can start these actions. The MCP tool has the annotations readOnlyHint=false and destructiveHint=true.toolCalls in --json and in the MCP result). The list does not include tool discovery (api_tool_list_resources) or language hints.ConfirmationCard, TriggerConfirmation, TriggerUserInputRequest, TriggerPluginAuth), the client stops, reports it as pendingConfirmations, and does not confirm it.edit_docx, edit_presentation, edit_workbook and edit_pdf return a new file. They do not change the original SharePoint file. Copilot reports that it has no direct edit of a cell in a SharePoint Excel file.copilot ask does not yet return or download the files that Copilot creates.mail send, draft send or teams send. These commands preview and need --yes. The MCP send tools need confirm=true.copilot app ask and the copilot_app MCP tool use the Copilot pane in the user’s Chrome editor. Unlike the chat tools below, they can edit the live Excel workbook or PowerPoint deck. They do not capture Office tokens or export raw AugLoop traffic. Co-authors see edits at once.
The controller never clicks Done, Undo, Keep, Allow editing or approval controls. Version 0.2.0 checks for visible permission dialogs before sending and while a request runs, then reports approval_required without clicking. This has synthetic tests only. Inline cards and app-specific approval messages still need live recordings. A pending request can time out instead of returning an approval result. Do not retry automatically after a timeout or disconnect. Edits can already have been applied.
The result includes status, text, actions, approval, applied and saved. Excel reports applied: null: generated script helpers can contain unused write code, so source patterns are only a mayWrite hint. PowerPoint uses explicit slide activity plus client responses, not an independent file check. saved is null unless requested. A later Graph modification timestamp is not proof that the specific edit was saved. Word support is experimental in 0.3.0 and returns applied: null; automated Word acceptance checks remain pending. See the release checklist.
These tests used only Ross’s own mailbox.
| Prompt | Result |
|---|---|
| Create a draft email to self | Copilot called outlook_mail_draft_message and created the draft. There was no confirmation step. |
| Send an email to self now | Copilot did not send. Its Outlook tool only creates drafts. In the web app, the user sends with the Send button in the compose widget, which this client does not have. |
| Find the latest email about a topic | Copilot called office365_search and search_office365. |
The real tool names on the wire are different from the self-reported names below. For example, the draft tool is outlook_mail_draft_message, not draft_email. Copilot finds its tools at run time with api_tool_list_resources. The Outlook tools run on an MCP server at https://substrate.office.com/outlook-mcp/mcp.
The client did not get a confirmation card in these tests, so the format of the card is not known. Actions on Teams, SharePoint files and the calendar are not tested.
search_m365(domain, query, filters?, response_length?)
domain = files | emails | chats | meetings | people | transcripts
open_m365_item(reference_id)
find_in_m365_item(reference_id, patterns[])
find_sharepoint_site(search_query?)
find_sharepoint_file(file_name)
get_sharepoint_file_metadata(file_id, document_library_id)
list_sharepoint_folder(document_library_id, folder_id?)
copy_sharepoint_file(source_file_id, source_library_id, destination_library_id, destination_folder_id)
move_sharepoint_file(source_file_id, source_library_id, destination_library_id, destination_folder_id)
rename_sharepoint_file(file_id, library_id, new_name)
delete_sharepoint_file(file_id, library_id)
share_sharepoint_file(file_id, library_id, recipients[], permissions[])
set_file_sensitivity_label(file_id, library_id, label_id)
create_sharepoint_list(site_id, name, columns?)
update_sharepoint_list_item(site_id, list_id, item_id, fields)
update_sharepoint_column(site_id, list_id, column_id, properties)
create_workbook(specification) -> .xlsx
edit_workbook(input_xlsx, edits) -> .xlsx
analyze_workbook(input_xlsx, analysis_request)
recalculate_workbook(workbook)
render_workbook(workbook)
An edit can target a sheet and a range with a formula, a format or a value operation. The edit applies to a workbook file (an artifact). It does not apply to a cell in a SharePoint file.
create_docx(content, formatting?) -> .docx
edit_docx(input_docx, edits) -> .docx
render_docx(docx)
create_presentation(content, design?) -> .pptx
edit_presentation(input_pptx, edits) -> .pptx
render_presentation(pptx)
create_pdf(content, layout?) -> .pdf
edit_pdf(input_pdf, edits) -> .pdf
exec_shell(command)
exec_python(code)
open_image(file_path)
download_supported_asset(url, destination)
The sandbox keeps files in /mnt/data.
generate_image(prompt, orientation?, transparent_background?)
edit_image(image, edit_request)
web_search(query)
open_web_page(url_or_search_result)
find_on_web_page(page, text)
follow_web_link(page, link)
Email retrieval uses search_m365("emails", query) and open_m365_item(email_reference).
draft_email(recipients, subject, body)
send_email(recipients, subject, body)
reply_email(email, body)
forward_email(email, recipients, body?)
delete_email(email_refs[])
archive_email(email_refs[])
move_email(email_refs[], folder)
copy_email(email_refs[], folder)
mark_email_read(email_refs[])
mark_email_unread(email_refs[])
categorize_email(email_refs[], categories[])
pin_email(email_refs[])
unpin_email(email_refs[])
flag_email(email_refs[], due_date?, reminder_date?)
unflag_email(email_refs[])
complete_email_flag(email_refs[])
mark_email_junk(email_refs[])
mark_email_not_junk(email_refs[])
get_inbox_rules()
create_inbox_rule(rule)
update_inbox_rule(rule_id, changes)
delete_inbox_rule(rule_ids[])
Meeting search uses search_m365("meetings", query).
find_availability(attendees[], date_range, duration, constraints?)
create_calendar_event(subject, start, duration?, attendees[], options?)
accept_meeting(meeting)
decline_meeting(meeting)
tentatively_accept_meeting(meeting)
follow_meeting(meeting)
delete_calendar_event(meeting)
find_meeting_room(time, requirements?)
create_scheduling_poll(attendees[], candidate_times[])
get_scheduling_poll(poll)
finalize_scheduling_poll(poll, selected_time)
manage_calendar_categories(operation, category)
create_calendar_instruction(rule)
list_calendar_instructions()
delete_calendar_instruction(rule)
get_calendar_instruction_activity()
get_workplace_location(person, date?)
find_building(name)
find_rooms(building, floor?)
find_desks(building, floor?)
get_room_availability(room, dates)
Chat search uses search_m365("chats", query).
list_joined_teams()
list_team_channels(team)
get_teams_thread(chat_or_channel)
create_teams_chat(members[], topic?)
send_teams_message(chat, content)
post_teams_channel_message(team, channel, content)
reply_to_teams_message(thread, message, content)
edit_teams_message(message, content)
delete_teams_message(message)
add_teams_chat_member(chat, person)
add_teams_channel_member(team, channel, person)
update_teams_channel(team, channel, changes)
search_m365("people", query)
open_person(person_reference)
search_planner_plans(scope)
search_planner_tasks(filters?)
Copilot reports that it can get more Planner actions when a request needs them.
search_viva_engage(query, filters?)
search_viva_learning(query, filters?)
Copilot can find other tenant connectors at run time.
search_microsoft_product_help(question)
search_previous_conversations(keywords[])
create_page(name, content, type)
remember_user_information(information)
forget_user_information(information)
create_background_task(name, request)
get_background_task(task)
update_background_task(task, instruction)
discover_tools(service_or_capability, query?)
These tools change data or send content to other people. A prompt to copilot ask can cause them.
| Area | Tools |
|---|---|
send_email, reply_email, forward_email, delete_email, move_email, mark_email_junk |
|
| Outlook rules | create_inbox_rule, update_inbox_rule, delete_inbox_rule |
| Calendar | create_calendar_event, delete_calendar_event, accept_meeting, decline_meeting, finalize_scheduling_poll |
| Teams | send_teams_message, post_teams_channel_message, reply_to_teams_message, edit_teams_message, delete_teams_message, create_teams_chat, member and channel changes |
| SharePoint | delete_sharepoint_file, move_sharepoint_file, rename_sharepoint_file, share_sharepoint_file, set_file_sensitivity_label, list and column changes |
| Memory | remember_user_information, forget_user_information |
| Background work | create_background_task, update_background_task |