Tool: search_messages
Searches for Google Chat messages using keywords and filters. Works across all spaces the user has access to, or can be scoped to a specific conversation.
The following sample demonstrate how to use curl
to invoke the search_messages
MCP tool.
| Curl Request |
|---|
curl --location 'https://chatmcp.googleapis.com/mcp/v1' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "search_messages", "arguments": { // provide these details according to the tool MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
Input Schema
Request to search for Google Chat messages using keywords and filters. Works across all spaces the user has access to, or can be scoped to a specific conversation.
SearchMessagesRequest
| JSON representation |
|---|
{ "searchParameters" : { object ( |
| Fields | |
|---|---|
searchParameters
|
Required. The search parameters to use for the search. |
orderBy
|
Optional. Specifies the order in which the results should be returned. Supported values: |
pageSize
|
Optional. The maximum number of results to return (max up to 100). If unspecified, at most 25 are returned. |
pageToken
|
Optional. A page token, received from a previous |
SearchParameters
| JSON representation |
|---|
{ "keywords" : [ string ] , "conversationId" : string , "sender" : string , "isUnread" : boolean , "hasLink" : boolean , "startTime" : string , "endTime" : string , "mentionsMe" : boolean , "conversationIncludesUser" : string , "spaceDisplayNames" : [ string ] } |
| Fields | |
|---|---|
keywords[]
|
Optional. A set of keywords which are used to filter the results. |
conversationId
|
Optional. Scopes the search to a specific conversation identifier, as returned from the search_conversations tool. Format: |
sender
|
Optional. Filter for messages from a specific user. Either the email or resource name of the sender can be used. User resource names are formatted as |
isUnread
|
Optional. Filter for messages that have not been read by the calling user. |
hasLink
|
Optional. Filter for messages containing at least one URL. |
startTime
|
Optional. Filter for messages created after this time. Format: ISO 8601 timestamp. |
endTime
|
Optional. Filter for messages created before this time. Format: ISO 8601 timestamp. |
mentionsMe
|
Optional. Filter for messages that explicitly mention the calling user. |
conversationIncludesUser
|
Optional. Filter for messages in DMs and group chats that include the specific user email or ID. |
spaceDisplayNames[]
|
Optional. Filter by a list of space names; space display names are partially matched. Note: Only the top 5 matches are returned. |
OrderBy
Specifies the order in which the results should be returned. By default, RELEVANCE_DESC is used if is_unread is not set to true, otherwise CREATE_TIME_DESC is used.
| Enums | |
|---|---|
ORDER_BY_UNSPECIFIED
|
Default value. |
CREATE_TIME_DESC
|
Order by create time in descending order. |
RELEVANCE_DESC
|
Order by relevance in descending order. |
Output Schema
Response to search for Google Chat messages. If next_page_token is populated, call SearchMessages can be called again with that token to retrieve the next page of results.
SearchMessagesResponse
| JSON representation |
|---|
{
"messages"
:
[
{
object (
|
| Fields | |
|---|---|
messages[]
|
List of message objects that match the search criteria, ordered according to the |
nextPageToken
|
A token that can be sent as |
ChatMessage
| JSON representation |
|---|
{ "messageId" : string , "threadId" : string , "plaintextBody" : string , "sender" : { object ( |
| Fields | |
|---|---|
messageId
|
Resource name of the message. Format: |
threadId
|
The thread this message belongs to. This will be empty if the message is unthreaded. Format: spaces/{space}/threads/{thread} |
plaintextBody
|
Plain text body of the message. |
sender
|
The sender of the message. |
createTime
|
Output only. Timestamp when the message was created. |
threadedReply
|
Whether message is a thread reply. |
attachments[]
|
Attachments included in the message. |
reactionSummaries[]
|
The emoji reactions summary included in the message. |
User
| JSON representation |
|---|
{
"userId"
:
string
,
"displayName"
:
string
,
"email"
:
string
,
"userType"
:
enum (
|
| Fields | |
|---|---|
userId
|
Resource name of a Chat user. Format: |
displayName
|
The display name of a Chat user. |
email
|
The email address of the user. This field is only populated when the user type is HUMAN. |
userType
|
The type of the user. |
ChatAttachmentMetadata
| JSON representation |
|---|
{
"attachmentId"
:
string
,
"filename"
:
string
,
"mimeType"
:
string
,
"source"
:
enum (
|
| Fields | |
|---|---|
attachmentId
|
Resource name of the attachment. Format: spaces/{space}/messages/{message}/attachments/{attachment}. |
filename
|
Name of the attachment. |
mimeType
|
Content type (MIME type). |
source
|
The source of the attachment. |
ReactionSummary
| JSON representation |
|---|
{ "emoji" : string , "count" : integer } |
| Fields | |
|---|---|
emoji
|
The emoji unicode string or custom emoji name. |
count
|
The total number of reactions using the associated emoji. |
UserType
The type of a Google Chat user.
| Enums | |
|---|---|
USER_TYPE_UNSPECIFIED
|
Unspecified. |
HUMAN
|
Human user. |
APP
|
App user. |
Source
The source of the attachment.
| Enums | |
|---|---|
SOURCE_UNSPECIFIED
|
Reserved. |
DRIVE_FILE
|
The file is a Google Drive file. |
UPLOADED_CONTENT
|
The file is uploaded to Chat. |
Tool Annotations
Destructive Hint: ❌ | Idempotent Hint: ✅ | Read Only Hint: ✅ | Open World Hint: ❌

