microsoft
outlook.
The person's Outlook mailbox — READ it, or prepare a DRAFT. Nothing here
setup & usage
on the "Outlook" card, click Authorize Outlook and choose your work account. Nothing else to install or register. The account itself is the "Microsoft 365 account" connector: Outlook borrows it and only adds its own permissions (read and write your mail, send it).
microsoft_admin_consent, see the "Microsoft 365 account" connector), then everyone can connectTwo tools, under the account the call names (_account="me@fabrikam.com"), otherwise the default one: outlook(op=search|get|attachment|drafts|folders|draft) reads or prepares a draft — nothing leaves, nothing moves; outlook_act(op=send|archive|trash|move) acts, and your client asks you to confirm it.
outlook(unread=true); "the invoices from Jane" → outlook(query="from:jane invoice")outlook(op="get", message_id="…"): its text and its attachments; "open the PDF attached" → op="attachment" with attachment_id or filename — a PDF or a text comes back as text, an Excel as CSVoutlook(op="draft", reply_to="…", body="…"), attachments and inline images accepted; "send it" → outlook_act(op="send", draft_id="…"), the draft as it standsoutlook(op="draft", to=["marc@…"], subject="…", body="…", attachments=[{"kind":"drive","file_id":"…"}]), then outlook_act(op="send", draft_id="…")outlook_act(op="send", to=[…], subject="…", html="<html>…"), or html_source={"kind":"project_file",…} for an HTML file: sent exactly as given, nothing rewritten. An image shown in it is an attachment with "content_id":"logo", referenced as <img src="cid:logo">; Outlook's rendering has its limits, see the oto guide "Mails HTML compatibles Outlook" (outlook-html)outlook_act(op="archive", message_ids=[…]); op="trash" moves to Deleted Items, op="move" to any folder (outlook(op="folders") lists them)full=true returns the complete Microsoft Graph object, fields=[…] keeps only some keys of each messageoutlook(op="draft") saves a draft, outlook_act(op="send") sends it. The answer says kind: draft (saved in Drafts, nothing left) or sent — with the link of the sent message, unless Microsoft has not filed it in Sent Items yet (webLink null and a note: the mail did leave)query) cannot be combined with unread: Microsoft refuses it. Put the condition in the query, or list without onemail only: search, read, attachments, drafts, replies, sending, archive, trash, move between folders. Nothing deletes a message for good, nothing changes rules, categories or the signature. The calendar is the "Outlook Calendar" connector.
this connector accepts multiple comptes: connecting with another compte adds it alongside the others, named by its address; reconnecting with the same one replaces its own.
_account="<name>" on the tool; list them: oto_identity(op='list', connector='outlook')oto_identity(op='set', connector='outlook', identity_id='<name>')_account) and adding upoutils
utilisation
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configurés.pipx install oto-cli puis oto outlook …