Skip to main content

Outlook: Draft Tool

Usage

All Portia tools using API endpoints that require OAuth are built with plug and play authentication support. They use Portia client credentials including client ID, client name and redirect URL. Such tools will raise a Action Clarification with an OAuth link as the action URL. The portia.wait_for_ready() method must be used in this scenario: Portia's OAuth server will listen for the authentication result and resolve the concerned clarification, allowing your plan run to resume again.

For more on this, please visit to the section on running Portia tools ().

Selecting Microsoft Tools

Microsoft tools are included in Portia's cloud registry but are not included in the default DefaultToolRegistry class. This is due to tool clashes with the Google tools (i.e. the agent wouldn't know whether to check Gmail or Outlook for email tasks). In order to use Microsoft tools rather than Google tools, simply filter out the Google tools from the Portia cloud registry rather than using the default registry:

from portia import PortiaToolRegistry, default_config

registry = PortiaToolRegistry(default_config()).filter_tools(lambda tool: not tool.id.startswith("portia:google:"))registry = PortiaToolRegistry(default_config()).filter_tools(
lambda tool: not tool.id.startswith("portia:google:")
)

Tool details

Tool ID: portia:microsoft:outlook:draft_email

Tool description: Drafts an email for the recipients indicated. Should not be used with the send email tool. Instead to send a draft email use the send_draft_email_tool. If the user hasn't given you an explicit title or body to the email, choose something appropriate based on the context of the email.

Args schema:

{
"description": "Input for DraftEmailTool.",
"properties": {
"recipients": {
"description": "The recipients that the email should be drafted for (should be a list of email addresses)",
"items": {
"type": "string"
},
"title": "Recipients",
"type": "array"
},
"email_title": {
"description": "The title of the email draft",
"title": "Email Title",
"type": "string"
},
"email_body": {
"description": "The body of the email draft",
"title": "Email Body",
"type": "string"
}
},
"required": [
"recipients",
"email_title",
"email_body"
],
"title": "DraftEmailToolSchema",
"type": "object"
}

Output schema:

('dict', 'dict: Output of the email drafted')