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: ❌