Skip to main content
ODAI provides seven productivity integrations covering email, scheduling, documents, web search, news, website fetching, and product search. The Google services (Gmail, Calendar, Docs) require OAuth authorization. All others authenticate via server-side API keys.
Google integrations require connecting your Google account first. Visit Settings → Integrations in the ODAI interface and follow the OAuth flow to grant the required scopes.
Authentication: Google OAuth — scope https://mail.google.com/Gmail lets you search, read, send, and reply to email threads directly from ODAI. The agent fetches up to 10 messages per call and processes both HTML and plain-text bodies, converting HTML to readable markdown.Capabilities:
  • Fetch recent inbox (all or unread only)
  • Search with Gmail query syntax (from:, subject:, has:attachment, etc.)
  • Search by sender email address
  • Send new emails (plain text; only when you explicitly say “send”)
  • Reply to existing threads, preserving thread context
Key functions (connectors/gmail.py):
def fetch_google_email_inbox(wrapper, unread: bool = False) -> dict
Retrieves the most recent inbox messages (max 10). Pass unread=True to filter to unread only.
def search_google_mail(wrapper, query: str) -> dict
Executes a Gmail search with any valid Gmail query string.
def search_google_mail_from_email(wrapper, email: str) -> dict
Finds all messages from a specific sender address.
def send_google_email(
    wrapper,
    sender_name: str,
    sender_email: str,
    recipient_email_addresses: list[str],
    cc: list[str],
    bcc: list[str],
    subject: str,
    body: str,
) -> dict
Sends a new email. The agent only calls this when you explicitly request sending.
def reply_to_google_email(
    wrapper,
    sender_name: str,
    sender_email: str,
    to: list[str],
    cc: list[str],
    bcc: list[str],
    subject: str,
    reply_to_id: str,
    thread_id: str,
    body: str,
) -> dict
Replies to an existing thread using the Gmail In-Reply-To and threadId fields.Example prompts:
  • Search my inbox for emails from Amazon
  • Send an email to John about our lunch plans
  • Show me unread messages from last week
  • Reply to the last thread with Thank you!
Authentication: Google OAuth — scope https://www.googleapis.com/auth/calendarGoogle Calendar lets you view upcoming events, create new meetings (with optional Google Meet links and invitees), and delete events. The agent operates on the primary calendar only and sends email notifications to attendees automatically.Capabilities:
  • Retrieve upcoming events (configurable limit, up to 250)
  • Create events with attendees, location, and Google Meet conference link
  • Delete events with automatic cancellation notices to attendees
  • Supports IANA timezones for accurate scheduling
Key functions (connectors/google_calendar.py):
def get_google_calendar_events(wrapper, limit: int = 10, date: str | None = None) -> dict
Returns upcoming events ordered by start time. Each event includes id, summary, start/end times, attendees, location, and Meet link.
def create_google_calendar_event(
    wrapper,
    title: str,
    timezone: str,
    start_date: datetime.datetime,
    end_date: datetime.datetime,
    location: str | None = None,
    invitees: list[str] = [],
    google_meet: bool = False,
) -> dict
Creates a calendar event. Set google_meet=True to attach a Meet conference link. Invitees receive email notifications.
def delete_google_calendar_event(wrapper, event_id: str) -> dict
Permanently deletes an event and sends cancellation notices to all attendees.Example prompts:
  • Create a meeting for tomorrow at 9 am called ‘Team Sync’
  • Show me my events for next week
  • Schedule a meeting with Alex at 4pm next Tuesday on Google Meet
  • Invite John and Alex to a meeting at 2pm called Design Workshop
Authentication: Google OAuth — scopes for Drive, Docs, Sheets, and SlidesGoogle Docs enables creating new documents and searching across your entire Google Drive by file name or content. The agent can read Docs, Sheets, and Slides — extracting the full text of each for analysis.Capabilities:
  • Create a new Google Doc with a title and text content
  • Search Drive by file name or full-text content
  • Read content from Google Docs, Sheets (all tabs), and Slides
  • Receive results including the webViewLink for direct access
Key functions (connectors/google_docs.py):
def save_google_doc(wrapper, title: str, content: str) -> dict
Creates a new Google Doc with the given title and inserts content as plain text.
def search_google_docs_by_name_or_content(wrapper, query: str) -> dict
Searches Drive using fullText contains '{query}' or name contains '{query}'. Returns each matching file with its id, name, webViewLink, and full extracted text.Example prompts:
  • Find all documents mentioning ‘project roadmap’
  • Look up my document cash flow and tell me how much I spend in September
  • Save this to Google Docs
Authentication: SerpAPI key (server-side, no user action required)Google News delivers current headlines and stories from reputable sources worldwide. It uses the same SerpAPI integration as Google Search but targets the news engine.Capabilities:
  • Retrieve current headlines by topic or keyword
  • Surface stories from reputable news sources
  • Cover politics, business, technology, weather, sports, and more
Example prompts:
  • Show me the latest headlines in US politics
  • What’s the news on Apple’s new product release?
  • Are there any major weather events happening today?
  • Find articles about electric vehicle trends
Authentication: None requiredFetch Website retrieves the content of any public URL and converts it to clean markdown using Cloudflare’s rendering pipeline. Useful for reading articles, documentation, or any web content without leaving the chat.Capabilities:
  • Fetch any public URL
  • Convert HTML to readable markdown
  • Summarize or analyze the retrieved content
Key functions (connectors/fetch_website.py):
def fetch_website(wrapper, url: str) -> dict
Fetches the given URL and returns the page content as markdown. The url must be a complete URL including protocol (e.g., https://example.com).Example prompts:
  • Fetch cnn.com and summarize the latest stories
  • Fetch OpenAI’s documentation and tell me how to use the API
  • Fetch the latest news from the New York Times
Authentication: SerpAPI key (server-side, no user action required)Google Shopping searches for products across online retailers, returning prices, sellers, ratings, and purchase links. Results can be saved directly to Google Docs.Capabilities:
  • Search products by name, category, or brand
  • Compare prices across multiple retailers
  • Retrieve seller links, ratings, and product specs
  • Save results to Google Docs for later reference
Key functions (connectors/google_shopping.py):
def get_google_products(wrapper, query: str) -> dict
Queries the Google Shopping engine via SerpAPI. Returns shopping_results with titles, prices, sellers, ratings, and purchase links.Example prompts:
  • Find the best price for AirPods Pro
  • Compare latest iPhone models and their prices
  • Where can I buy a standing desk online?
  • Show me running shoes under $100
  • Save these results to Google Docs

Build docs developers (and LLMs) love