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')