microsoft
outlook.
A message in the person's Outlook mailbox — search, read, fetch an
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 connectoutlook_message(op=search|get|attachment|drafts|folders|archive|trash|move) and outlook_compose, under the account the call names (_account="me@fabrikam.com"), otherwise the default one.
outlook_message(unread=true); "the invoices from Jane" → outlook_message(query="from:jane invoice")outlook_message(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_compose(reply_to="…", body="…"); "send it" → the same with mode="send"outlook_compose(to=["marc@…"], subject="…", body="…", attachments=[{"kind":"drive","file_id":"…"}]) — a draft unless mode="send"outlook_message(op="archive", message_ids=[…]); op="trash" moves to Deleted Items, op="move" to any folder (op="folders" lists them)full=true returns the complete Microsoft Graph object, fields=[…] keeps only some keys of each messageoutlook_compose sends only with mode="send". Its answer says kind: draft (saved in Drafts, nothing left) or sentnew_id — the old id no longer existsquery) 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
usage
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configured.pipx install oto-cli then oto outlook …