Skip to Content

Google

Google icon
Arcade Optimized

Arcade.dev LLM tools for Google Workspace

Author:Arcade
Version:2.0.2
Auth:User authorization via the Google auth provider
37tools
PyPI VersionPython VersionsWheel StatusDownloadsLicense

Arcade.dev provides tools for integrating with Google Workspace, enabling developers to automate tasks and enhance productivity through access to various Google services.

Capabilities

  • Manage calendar events, including creation, deletion, and updates.
  • Access and manipulate Gmail functionalities, such as sending emails and organizing threads and labels.
  • Interact with Google Drive for file management, including document creation and retrieval.
  • Create and manage contacts within Google Contacts seamlessly.

OAuth

Uses Google OAuth 2.0 for authentication, requiring the following scopes:

  • https://www.googleapis.com/auth/calendar.events
  • https://www.googleapis.com/auth/contacts
  • https://www.googleapis.com/auth/gmail.*

Secrets

No secrets are utilized in this toolkit.

Available tools(37)

37 of 37
Tool nameDescriptionSecrets
Add and remove labels from an email using the Gmail API.
Create a blank Google Docs document with the specified title.
Create a new contact record in Google Contacts. Examples: ``` create_contact(given_name="Alice") create_contact(given_name="Alice", family_name="Smith") create_contact(given_name="Alice", email="alice@example.com") ```
Create a Google Docs document with the specified title and text content.
Create a new event/meeting/sync/meetup in the specified calendar.
Create a new label in the user's mailbox.
Create a new spreadsheet with the provided title and data in its first sheet Returns the newly created spreadsheet's id and title
Delete a draft email using the Gmail API.
Delete an event from Google Calendar.
Provides time slots when everyone is free within a given date range and time boundaries.
Generate a Google File Picker URL for user-driven file selection and authorization. This tool generates a URL that directs the end-user to a Google File Picker interface where where they can select or upload Google Drive files. Users can grant permission to access their Drive files, providing a secure and authorized way to interact with their files. This is particularly useful when prior tools (e.g., those accessing or modifying Google Docs, Google Sheets, etc.) encountered failures due to file non-existence (Requested entity was not found) or permission errors. Once the user completes the file picker flow, the prior tool can be retried.
Get the latest version of the specified Google Docs document.
Get the file/folder tree structure of the user's Google Drive.
Get the user entered values and formatted values for all cells in all sheets in the spreadsheet along with the spreadsheet's properties
Get the specified thread by ID.
Updates an existing Google Docs document using the batchUpdate API endpoint.
List all calendars accessible by the user.
Lists draft emails in the user's draft mailbox using the Gmail API.
Read emails from a Gmail account and extract plain text content.
Search for emails by header using the Gmail API. At least one of the following parameters MUST be provided: sender, recipient, subject, date_range, label, or body.
List events from the specified calendar within the given datetime range. min_end_datetime serves as the lower bound (exclusive) for an event's end time. max_start_datetime serves as the upper bound (exclusive) for an event's start time. For example: If min_end_datetime is set to 2024-09-15T09:00:00 and max_start_datetime is set to 2024-09-16T17:00:00, the function will return events that: 1. End after 09:00 on September 15, 2024 (exclusive) 2. Start before 17:00 on September 16, 2024 (exclusive) This means an event starting at 08:00 on September 15 and ending at 10:00 on September 15 would be included, but an event starting at 17:00 on September 16 would not be included.
List all the labels in the user's mailbox.
List threads in the user's mailbox.
Send a reply to an email message.
Searches for documents in the user's Google Drive and returns a list of documents (with text content) matching the search criteria. Excludes documents that are in the trash. Note: use this tool only when the user prompt requires the documents' content. If the user only needs a list of documents, use the `search_documents` tool instead.
Page 1 of 2(25 of 37)

Selected tools

No tools selected.

Click "Show all tools" to add tools.

Requirements

Select tools to see requirements

#

Google.ChangeEmailLabels

Add and remove labels from an email using the Gmail API.

Parameters

ParameterTypeReq.Description
email_idstringRequiredThe ID of the email to modify labels for
labels_to_addarray<string>RequiredList of label names to add
labels_to_removearray<string>RequiredList of label names to remove

Requirements

No secrets required

Output

Type:json— List of labels that were added, removed, and not found
#

Google.CreateBlankDocument

Create a blank Google Docs document with the specified title.

Parameters

ParameterTypeReq.Description
titlestringRequiredThe title of the blank document to create

Requirements

No secrets required

Output

Type:json— The created document's title, documentId, and documentUrl in a dictionary
#

Google.CreateContact

Create a new contact record in Google Contacts. Examples: ``` create_contact(given_name="Alice") create_contact(given_name="Alice", family_name="Smith") create_contact(given_name="Alice", email="alice@example.com") ```

Parameters

ParameterTypeReq.Description
given_namestringRequiredThe given name of the contact
family_namestringOptionalThe optional family name of the contact
emailstringOptionalThe optional email address of the contact

Requirements

No secrets required

Output

Type:json— A dictionary containing the details of the created contact
#

Google.CreateDocumentFromText

Create a Google Docs document with the specified title and text content.

Parameters

ParameterTypeReq.Description
titlestringRequiredThe title of the document to create
text_contentstringRequiredThe text content to insert into the document

Requirements

No secrets required

Output

Type:json— The created document's title, documentId, and documentUrl in a dictionary
#

Google.CreateEvent

Create a new event/meeting/sync/meetup in the specified calendar.

Parameters

ParameterTypeReq.Description
summarystringRequiredThe title of the event
start_datetimestringRequiredThe datetime when the event starts in ISO 8601 format, e.g., '2024-12-31T15:30:00'.
end_datetimestringRequiredThe datetime when the event ends in ISO 8601 format, e.g., '2024-12-31T17:30:00'.
calendar_idstringOptionalThe ID of the calendar to create the event in, usually 'primary'.
descriptionstringOptionalThe description of the event
locationstringOptionalThe location of the event
visibilitystringOptionalThe visibility of the event
defaultpublicprivateconfidential
attendee_emailsarray<string>OptionalThe list of attendee emails. Must be valid email addresses e.g., username@domain.com.

Requirements

No secrets required

Output

Type:json— A dictionary containing the created event details
#

Google.CreateLabel

Create a new label in the user's mailbox.

Parameters

ParameterTypeReq.Description
label_namestringRequiredThe name of the label to create

Requirements

No secrets required

Output

Type:json— The details of the created label
#

Google.CreateSpreadsheet

Create a new spreadsheet with the provided title and data in its first sheet Returns the newly created spreadsheet's id and title

Parameters

ParameterTypeReq.Description
titlestringOptionalThe title of the new spreadsheet
datastringOptionalThe data to write to the spreadsheet. A JSON string (property names enclosed in double quotes) representing a dictionary that maps row numbers to dictionaries that map column letters to cell values. For example, data[23]['C'] would be the value of the cell in row 23, column C. Type hint: dict[int, dict[str, Union[int, float, str, bool]]]

Requirements

No secrets required

Output

Type:json— The created spreadsheet's id and title
#

Google.DeleteDraftEmail

Delete a draft email using the Gmail API.

Parameters

ParameterTypeReq.Description
draft_email_idstringRequiredThe ID of the draft email to delete

Requirements

No secrets required

Output

Type:string— A confirmation message indicating successful deletion
#

Google.DeleteEvent

Delete an event from Google Calendar.

Parameters

ParameterTypeReq.Description
event_idstringRequiredThe ID of the event to delete
calendar_idstringOptionalThe ID of the calendar containing the event
send_updatesstringOptionalSpecifies which attendees to notify about the deletion
noneallexternalOnly

Requirements

No secrets required

Output

Type:string— A string containing the deletion confirmation message
#

Google.FindTimeSlotsWhenEveryoneIsFree

Provides time slots when everyone is free within a given date range and time boundaries.

Parameters

ParameterTypeReq.Description
email_addressesarray<string>OptionalThe list of email addresses from people in the same organization domain (apart from the currently logged in user) to search for free time slots. Defaults to None, which will return free time slots for the current user only.
start_datestringOptionalThe start date to search for time slots in the format 'YYYY-MM-DD'. Defaults to today's date. It will search starting from this date at the time 00:00:00.
end_datestringOptionalThe end date to search for time slots in the format 'YYYY-MM-DD'. Defaults to seven days from the start date. It will search until this date at the time 23:59:59.
start_time_boundarystringOptionalWill return free slots in any given day starting from this time in the format 'HH:MM'. Defaults to '08:00', which is a usual business hour start time.
end_time_boundarystringOptionalWill return free slots in any given day until this time in the format 'HH:MM'. Defaults to '18:00', which is a usual business hour end time.

Requirements

No secrets required

Output

Type:json— A dictionary with the free slots and the timezone in which time slots are represented.
#

Google.GenerateGoogleFilePickerUrl

Generate a Google File Picker URL for user-driven file selection and authorization. This tool generates a URL that directs the end-user to a Google File Picker interface where where they can select or upload Google Drive files. Users can grant permission to access their Drive files, providing a secure and authorized way to interact with their files. This is particularly useful when prior tools (e.g., those accessing or modifying Google Docs, Google Sheets, etc.) encountered failures due to file non-existence (Requested entity was not found) or permission errors. Once the user completes the file picker flow, the prior tool can be retried.

Parameters

No parameters required.

Requirements

No secrets required

Output

Type:json— Google File Picker URL for user file selection and permission granting
#

Google.GetDocumentById

Get the latest version of the specified Google Docs document.

Parameters

ParameterTypeReq.Description
document_idstringRequiredThe ID of the document to retrieve.

Requirements

No secrets required

Output

Type:json— The document contents as a dictionary
#

Google.GetFileTreeStructure

Get the file/folder tree structure of the user's Google Drive.

Parameters

ParameterTypeReq.Description
include_shared_drivesbooleanOptionalWhether to include shared drives in the file tree structure. Defaults to False.
restrict_to_shared_drive_idstringOptionalIf provided, only include files from this shared drive in the file tree structure. Defaults to None, which will include files and folders from all drives.
include_organization_domain_documentsbooleanOptionalWhether to include documents from the organization's domain. This is applicable to admin users who have permissions to view organization-wide documents in a Google Workspace account. Defaults to False.
order_byarray<string>OptionalSort order. Defaults to listing the most recently modified documents first
createdTimecreatedTime descfolderfolder descmodifiedByMeTimemodifiedByMeTime descmodifiedTimemodifiedTime descnamename descname_naturalname_natural descquotaBytesUsedquotaBytesUsed descrecencyrecency descsharedWithMeTimesharedWithMeTime descstarredstarred descviewedByMeTimeviewedByMeTime desc
limitintegerOptionalThe number of files and folders to list. Defaults to None, which will list all files and folders.

Requirements

No secrets required

Output

Type:json— A dictionary containing the file/folder tree structure in the user's Google Drive
#

Google.GetSpreadsheet

Get the user entered values and formatted values for all cells in all sheets in the spreadsheet along with the spreadsheet's properties

Parameters

ParameterTypeReq.Description
spreadsheet_idstringRequiredThe id of the spreadsheet to get

Requirements

No secrets required

Output

Type:json— The spreadsheet properties and data for all sheets in the spreadsheet
#

Google.GetThread

Get the specified thread by ID.

Parameters

ParameterTypeReq.Description
thread_idstringRequiredThe ID of the thread to retrieve

Requirements

No secrets required

Output

Type:json— A dictionary containing the thread details
#

Google.InsertTextAtEndOfDocument

Updates an existing Google Docs document using the batchUpdate API endpoint.

Parameters

ParameterTypeReq.Description
document_idstringRequiredThe ID of the document to update.
text_contentstringRequiredThe text content to insert into the document

Requirements

No secrets required

Output

Type:json— The response from the batchUpdate API as a dict.
#

Google.ListCalendars

List all calendars accessible by the user.

Parameters

ParameterTypeReq.Description
max_resultsintegerOptionalThe maximum number of calendars to return. Up to 250 calendars, defaults to 10.
show_deletedbooleanOptionalWhether to show deleted calendars. Defaults to False
show_hiddenbooleanOptionalWhether to show hidden calendars. Defaults to False
next_page_tokenstringOptionalThe token to retrieve the next page of calendars. Optional.

Requirements

No secrets required

Output

Type:json— A dictionary containing the calendars accessible by the end user
#

Google.ListDraftEmails

Lists draft emails in the user's draft mailbox using the Gmail API.

Parameters

ParameterTypeReq.Description
n_draftsintegerOptionalNumber of draft emails to read

Requirements

No secrets required

Output

Type:json— A dictionary containing a list of draft email details
#

Google.ListEmails

Read emails from a Gmail account and extract plain text content.

Parameters

ParameterTypeReq.Description
n_emailsintegerOptionalNumber of emails to read

Requirements

No secrets required

Output

Type:json— A dictionary containing a list of email details
#

Google.ListEmailsByHeader

Search for emails by header using the Gmail API. At least one of the following parameters MUST be provided: sender, recipient, subject, date_range, label, or body.

Parameters

ParameterTypeReq.Description
senderstringOptionalThe name or email address of the sender of the email
recipientstringOptionalThe name or email address of the recipient
subjectstringOptionalWords to find in the subject of the email
bodystringOptionalWords to find in the body of the email
date_rangestringOptionalThe date range of the email
todayyesterdaylast_7_dayslast_30_daysthis_monthlast_monththis_year
labelstringOptionalThe label name to filter by
max_resultsintegerOptionalThe maximum number of emails to return

Requirements

No secrets required

Output

Type:json— A dictionary containing a list of email details matching the search criteria
#

Google.ListEvents

List events from the specified calendar within the given datetime range. min_end_datetime serves as the lower bound (exclusive) for an event's end time. max_start_datetime serves as the upper bound (exclusive) for an event's start time. For example: If min_end_datetime is set to 2024-09-15T09:00:00 and max_start_datetime is set to 2024-09-16T17:00:00, the function will return events that: 1. End after 09:00 on September 15, 2024 (exclusive) 2. Start before 17:00 on September 16, 2024 (exclusive) This means an event starting at 08:00 on September 15 and ending at 10:00 on September 15 would be included, but an event starting at 17:00 on September 16 would not be included.

Parameters

ParameterTypeReq.Description
min_end_datetimestringRequiredFilter by events that end on or after this datetime in ISO 8601 format, e.g., '2024-09-15T09:00:00'.
max_start_datetimestringRequiredFilter by events that start before this datetime in ISO 8601 format, e.g., '2024-09-16T17:00:00'.
calendar_idstringOptionalThe ID of the calendar to list events from
max_resultsintegerOptionalThe maximum number of events to return

Requirements

No secrets required

Output

Type:json— A dictionary containing the list of events
#

Google.ListLabels

List all the labels in the user's mailbox.

Parameters

No parameters required.

Requirements

No secrets required

Output

Type:json— A dictionary containing a list of label details
#

Google.ListThreads

List threads in the user's mailbox.

Parameters

ParameterTypeReq.Description
page_tokenstringOptionalPage token to retrieve a specific page of results in the list
max_resultsintegerOptionalThe maximum number of threads to return
include_spam_trashbooleanOptionalWhether to include spam and trash in the results

Requirements

No secrets required

Output

Type:json— A dictionary containing a list of thread details
#

Google.ReplyToEmail

Send a reply to an email message.

Parameters

ParameterTypeReq.Description
bodystringRequiredThe body of the email
reply_to_message_idstringRequiredThe ID of the message to reply to
reply_to_whomstringOptionalWhether to reply to every recipient (including cc) or only to the original sender. Defaults to 'GmailReplyToWhom.ONLY_THE_SENDER'.
every_recipientonly_the_sender
bccarray<string>OptionalBCC recipients of the email

Requirements

No secrets required

Output

Type:json— A dictionary containing the sent email details
#

Google.SearchAndRetrieveDocuments

Searches for documents in the user's Google Drive and returns a list of documents (with text content) matching the search criteria. Excludes documents that are in the trash. Note: use this tool only when the user prompt requires the documents' content. If the user only needs a list of documents, use the `search_documents` tool instead.

Parameters

ParameterTypeReq.Description
return_formatstringOptionalThe format of the document to return. Defaults to Markdown.
markdownhtmlgoogle_api_json
document_containsarray<string>OptionalKeywords or phrases that must be in the document title or body. Provide a list of keywords or phrases if needed.
document_not_containsarray<string>OptionalKeywords or phrases that must NOT be in the document title or body. Provide a list of keywords or phrases if needed.
search_only_in_shared_drive_idstringOptionalThe ID of the shared drive to restrict the search to. If provided, the search will only return documents from this drive. Defaults to None, which searches across all drives.
include_shared_drivesbooleanOptionalWhether to include documents from shared drives. Defaults to False (searches only in the user's 'My Drive').
include_organization_domain_documentsbooleanOptionalWhether to include documents from the organization's domain. This is applicable to admin users who have permissions to view organization-wide documents in a Google Workspace account. Defaults to False.
order_byarray<string>OptionalSort order. Defaults to listing the most recently modified documents first
createdTimecreatedTime descfolderfolder descmodifiedByMeTimemodifiedByMeTime descmodifiedTimemodifiedTime descnamename descname_naturalname_natural descquotaBytesUsedquotaBytesUsed descrecencyrecency descsharedWithMeTimesharedWithMeTime descstarredstarred descviewedByMeTimeviewedByMeTime desc
limitintegerOptionalThe number of documents to list
pagination_tokenstringOptionalThe pagination token to continue a previous request

Requirements

No secrets required

Output

Type:json— A dictionary containing 'documents_count' (number of documents returned) and 'documents' (a list of documents with their content).
#

Google.SearchContactsByEmail

Search the user's contacts in Google Contacts by email address.

Parameters

ParameterTypeReq.Description
emailstringRequiredThe email address to search for
limitintegerOptionalThe maximum number of contacts to return (30 is the max allowed by Google API)

Requirements

No secrets required

Output

Type:json— A dictionary containing the list of matching contacts
#

Google.SearchContactsByName

Search the user's contacts in Google Contacts by name.

Parameters

ParameterTypeReq.Description
namestringRequiredThe full name to search for
limitintegerOptionalThe maximum number of contacts to return (30 is the max allowed by Google API)

Requirements

No secrets required

Output

Type:json— A dictionary containing the list of matching contacts
#

Google.SearchDocuments

Searches for documents in the user's Google Drive. Excludes documents that are in the trash.

Parameters

ParameterTypeReq.Description
document_containsarray<string>OptionalKeywords or phrases that must be in the document title or body. Provide a list of keywords or phrases if needed.
document_not_containsarray<string>OptionalKeywords or phrases that must NOT be in the document title or body. Provide a list of keywords or phrases if needed.
search_only_in_shared_drive_idstringOptionalThe ID of the shared drive to restrict the search to. If provided, the search will only return documents from this drive. Defaults to None, which searches across all drives.
include_shared_drivesbooleanOptionalWhether to include documents from shared drives. Defaults to False (searches only in the user's 'My Drive').
include_organization_domain_documentsbooleanOptionalWhether to include documents from the organization's domain. This is applicable to admin users who have permissions to view organization-wide documents in a Google Workspace account. Defaults to False.
order_byarray<string>OptionalSort order. Defaults to listing the most recently modified documents first
createdTimecreatedTime descfolderfolder descmodifiedByMeTimemodifiedByMeTime descmodifiedTimemodifiedTime descnamename descname_naturalname_natural descquotaBytesUsedquotaBytesUsed descrecencyrecency descsharedWithMeTimesharedWithMeTime descstarredstarred descviewedByMeTimeviewedByMeTime desc
limitintegerOptionalThe number of documents to list
pagination_tokenstringOptionalThe pagination token to continue a previous request

Requirements

No secrets required

Output

Type:json— A dictionary containing 'documents_count' (number of documents returned) and 'documents' (a list of document details including 'kind', 'mimeType', 'id', and 'name' for each document)
#

Google.SearchThreads

Search for threads in the user's mailbox

Parameters

ParameterTypeReq.Description
page_tokenstringOptionalPage token to retrieve a specific page of results in the list
max_resultsintegerOptionalThe maximum number of threads to return
include_spam_trashbooleanOptionalWhether to include spam and trash in the results
label_idsarray<string>OptionalThe IDs of labels to filter by
senderstringOptionalThe name or email address of the sender of the email
recipientstringOptionalThe name or email address of the recipient
subjectstringOptionalWords to find in the subject of the email
bodystringOptionalWords to find in the body of the email
date_rangestringOptionalThe date range of the email
todayyesterdaylast_7_dayslast_30_daysthis_monthlast_monththis_year

Requirements

No secrets required

Output

Type:json— A dictionary containing a list of thread details
#

Google.SendDraftEmail

Send a draft email using the Gmail API.

Parameters

ParameterTypeReq.Description
email_idstringRequiredThe ID of the draft to send

Requirements

No secrets required

Output

Type:json— A dictionary containing the sent email details
#

Google.SendEmail

Send an email using the Gmail API.

Parameters

ParameterTypeReq.Description
subjectstringRequiredThe subject of the email
bodystringRequiredThe body of the email
recipientstringRequiredThe recipient of the email
ccarray<string>OptionalCC recipients of the email
bccarray<string>OptionalBCC recipients of the email

Requirements

No secrets required

Output

Type:json— A dictionary containing the sent email details
#

Google.TrashEmail

Move an email to the trash folder using the Gmail API.

Parameters

ParameterTypeReq.Description
email_idstringRequiredThe ID of the email to trash

Requirements

No secrets required

Output

Type:json— A dictionary containing the trashed email details
#

Google.UpdateDraftEmail

Update an existing email draft using the Gmail API.

Parameters

ParameterTypeReq.Description
draft_email_idstringRequiredThe ID of the draft email to update.
subjectstringRequiredThe subject of the draft email
bodystringRequiredThe body of the draft email
recipientstringRequiredThe recipient of the draft email
ccarray<string>OptionalCC recipients of the draft email
bccarray<string>OptionalBCC recipients of the draft email

Requirements

No secrets required

Output

Type:json— A dictionary containing the updated draft email details
#

Google.UpdateEvent

Update an existing event in the specified calendar with the provided details. Only the provided fields will be updated; others will remain unchanged. `updated_start_datetime` and `updated_end_datetime` are independent and can be provided separately.

Parameters

ParameterTypeReq.Description
event_idstringRequiredThe ID of the event to update
updated_start_datetimestringOptionalThe updated datetime that the event starts in ISO 8601 format, e.g., '2024-12-31T15:30:00'.
updated_end_datetimestringOptionalThe updated datetime that the event ends in ISO 8601 format, e.g., '2024-12-31T17:30:00'.
updated_calendar_idstringOptionalThe updated ID of the calendar containing the event.
updated_summarystringOptionalThe updated title of the event
updated_descriptionstringOptionalThe updated description of the event
updated_locationstringOptionalThe updated location of the event
updated_visibilitystringOptionalThe visibility of the event
defaultpublicprivateconfidential
attendee_emails_to_addarray<string>OptionalThe list of attendee emails to add. Must be valid email addresses e.g., username@domain.com.
attendee_emails_to_removearray<string>OptionalThe list of attendee emails to remove. Must be valid email addresses e.g., username@domain.com.
send_updatesstringOptionalShould attendees be notified of the update? (none, all, external_only)
noneallexternalOnly

Requirements

No secrets required

Output

Type:string— A string containing the updated event details, including the event ID, update timestamp, and a link to view the updated event.
#

Google.WriteDraftEmail

Compose a new email draft using the Gmail API.

Parameters

ParameterTypeReq.Description
subjectstringRequiredThe subject of the draft email
bodystringRequiredThe body of the draft email
recipientstringRequiredThe recipient of the draft email
ccarray<string>OptionalCC recipients of the draft email
bccarray<string>OptionalBCC recipients of the draft email

Requirements

No secrets required

Output

Type:json— A dictionary containing the created draft email details
#

Google.WriteDraftReplyEmail

Compose a draft reply to an email message.

Parameters

ParameterTypeReq.Description
bodystringRequiredThe body of the draft reply email
reply_to_message_idstringRequiredThe Gmail message ID of the message to draft a reply to
reply_to_whomstringOptionalWhether to reply to every recipient (including cc) or only to the original sender. Defaults to 'GmailReplyToWhom.ONLY_THE_SENDER'.
every_recipientonly_the_sender
bccarray<string>OptionalBCC recipients of the draft reply email

Requirements

No secrets required

Output

Type:json— A dictionary containing the created draft reply email details
#

Google.WriteToCell

Write a value to a single cell in a spreadsheet.

Parameters

ParameterTypeReq.Description
spreadsheet_idstringRequiredThe id of the spreadsheet to write to
columnstringRequiredThe column string to write to. For example, 'A', 'F', or 'AZ'
rowintegerRequiredThe row number to write to
valuestringRequiredThe value to write to the cell
sheet_namestringOptionalThe name of the sheet to write to. Defaults to 'Sheet1'

Requirements

No secrets required

Output

Type:json— The status of the operation
Last updated on