Инструмент: search_messages
Ищет сообщения Google Chat по ключевым словам и фильтрам и возвращает их в формате Markdown. Работает во всех чат-группах, к которым у пользователя есть доступ, или в определенном чате.
Вот несколько советов, которые помогут вам решить, когда использовать search_messages, а когда – другие инструменты для поиска и чтения:
- Используйте
search_messages, чтобы найти определенный контент, ключевые слова, упоминания, ссылки, отправителей или непрочитанные сообщения в нескольких чат-группах или без известного идентификатора чата. - Используйте
list_messages, если вы знаете идентификатор чат-группы или цепочки и хотите прочитать сообщения в хронологическом порядке. - Используйте
search_conversations, чтобы найти метаданные чат-группы, например идентификаторы чатов, по отображаемому названию чат-группы или участникам (поиск выполняется только по метаданным, а не по содержимому сообщений).
Если searchParameters используется без фильтров, возвращаются недавние сообщения из всех чатов, доступных пользователю.
В примере кода ниже показано, как использовать curl для вызова инструмента MCP search_messages.
| Запрос cURL |
|---|
curl --location 'https://chatmcp.googleapis.com/mcp/v1' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --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 MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' |
Схема ввода
SearchMessagesRequest
| JSON-представление |
|---|
{
"searchParameters": {
object ( |
| Поля | |
|---|---|
searchParameters |
Обязательно. Параметры, которые будут использоваться для поиска. |
pageSize |
Необязательное поле. Максимальное количество результатов, которые нужно вернуть (не более 100). Если значение не указано, возвращается не более 25 результатов. |
pageToken |
Необязательное поле. Токен страницы, полученный из предыдущего вызова |
SearchParameters
| JSON-представление |
|---|
{
"keywords": [
string
],
"conversationId": string,
"sender": string,
"isUnread": boolean,
"hasLink": boolean,
"startTime": string,
"endTime": string,
"mentionsMe": boolean,
"conversationIncludesUser": string,
"spaceDisplayNames": [
string
],
"conversationTypes": [
enum ( |
| Поля | |
|---|---|
keywords[] |
Необязательное поле. Набор ключевых слов, которые используются для фильтрации результатов. |
conversationId |
Необязательное поле. Ограничивает поиск определенным идентификатором чата, возвращенным инструментом search_conversations. Формат: |
sender |
Необязательное поле. Фильтрация сообщений от определенного пользователя. Можно использовать адрес электронной почты или название ресурса отправителя. Названия ресурсов пользователей имеют формат |
isUnread |
Необязательное поле. Фильтр для сообщений, которые не были прочитаны пользователем, выполняющим вызов. |
hasLink |
Необязательное поле. Фильтр для сообщений, содержащих хотя бы один URL. |
startTime |
Необязательное поле. Фильтр для сообщений, созданных после этого времени. Формат: временная метка ISO 8601. |
endTime |
Необязательное поле. Фильтр для сообщений, созданных до этого времени. Формат: временная метка ISO 8601. |
mentionsMe |
Необязательное поле. Фильтр для сообщений, в которых явно упоминается вызывающий пользователь. |
conversationIncludesUser |
Необязательное поле. Фильтр для сообщений в прямых переписках и групповых чатах, включающих определенный адрес электронной почты или идентификатор пользователя. |
spaceDisplayNames[] |
Необязательное поле. Фильтрация по списку названий чат-групп. Отображаемые названия чат-групп сопоставляются частично. Примечание. Возвращаются только первые пять совпадений. |
conversationTypes[] |
Необязательное поле. Фильтр по типу чата. |
hasAttachment |
Необязательное поле. Фильтр для сообщений, содержащих хотя бы один прикрепленный файл. Примечание. Это поле находится в разработке и может поддерживаться не во всех средах. |
ConversationType
Определяет тип разговора.
| Перечисления | |
|---|---|
CONVERSATION_TYPE_UNSPECIFIED |
Не указано. |
NAMED_SPACE |
Именованная чат-группа. |
GROUP_CHAT |
Групповой чат с тремя или более пользователями. |
DIRECT_MESSAGE |
Прямая переписка между двумя людьми или между человеком и приложением Chat. |
Схема вывода
Ответ на поиск сообщений Google Chat. Если next_page_token заполнен, можно снова вызвать SearchMessages с этим токеном, чтобы получить следующую страницу результатов.
SearchMessagesResponse
| JSON-представление |
|---|
{
"messages": [
{
object ( |
| Поля | |
|---|---|
messages[] |
Список объектов сообщений, соответствующих критериям поиска. |
nextPageToken |
Токен, который можно отправить как |
ChatMessage
| JSON-представление |
|---|
{ "messageId": string, "threadId": string, "plaintextBody": string, "sender": { object ( |
| Поля | |
|---|---|
messageId |
Название ресурса сообщения. Формат: spaces/{space}/messages/{message} |
threadId |
Цепочка, к которой относится это сообщение. Если сообщение не входит в цепочку, это поле будет пустым. Формат: spaces/{space}/threads/{thread} |
plaintextBody |
Текст сообщения с форматированием Markdown. |
sender |
Отправитель сообщения. |
createTime |
Только для вывода. Временная метка создания сообщения. Формат: временная метка ISO 8601. |
threadedReply |
Является ли сообщение ответом в цепочке. |
attachments[] |
Файлы, прикрепленные к письму. |
reactionSummaries[] |
Сводка реакций с эмодзи, включенная в сообщение. |
quotedMessageMetadata |
Только для вывода. Информация об исходном письме, которое цитируется или пересылается в этом письме. Примечание. Это поле находится на стадии разработки и может быть доступно не во всех средах. |
Пользователь
| JSON-представление |
|---|
{
"userId": string,
"displayName": string,
"email": string,
"userType": enum ( |
| Поля | |
|---|---|
userId |
Название ресурса пользователя Chat. Формат: users/{user}. |
displayName |
Отображаемое имя пользователя Chat. |
email |
Адрес электронной почты пользователя. Это поле заполняется, только если тип пользователя – HUMAN. |
userType |
Тип пользователя. |
ChatAttachmentMetadata
| JSON-представление |
|---|
{
"attachmentId": string,
"filename": string,
"mimeType": string,
"source": enum ( |
| Поля | |
|---|---|
attachmentId |
Название ресурса прикрепленного файла. Формат: spaces/{space}/messages/{message}/attachments/{attachment}. |
filename |
Название прикрепленного файла. |
mimeType |
Тип контента (MIME-тип). |
source |
Источник прикрепленного файла. |
driveFileId |
Только для вывода. Идентификатор файла на Google Диске. Заполняется, только если источником является DRIVE_FILE. Используйте с MCP Google Диска. |
ReactionSummary
| JSON-представление |
|---|
{ "emoji": string, "count": integer } |
| Поля | |
|---|---|
emoji |
Строка Unicode для эмодзи или название пользовательского эмодзи. |
count |
Общее количество реакций с использованием связанного эмодзи. |
QuotedMessageMetadata
| JSON-представление |
|---|
{ "messageId": string, "lastUpdateTime": string, "quoteType": enum ( |
| Поля | |
|---|---|
messageId |
Только для вывода. Название ресурса исходного сообщения, которое цитируется или пересылается. Формат: spaces/{space}/messages/{message} |
lastUpdateTime |
Только для вывода. Временная метка создания или последнего обновления исходного сообщения до того, как оно было процитировано или переслано. Формат: временная метка ISO 8601. |
quoteType |
Только для вывода. Тип цитаты. |
plaintextBody |
Только для вывода. Снимок текстового тела исходного сообщения на момент цитирования или пересылки. Форматирование с помощью Markdown для |
sender |
Только для вывода. Отображаемое имя автора исходного сообщения. |
attachments[] |
Только для вывода. Прикрепленные файлы, которые были частью исходного сообщения. Заполняется только для типа цены |
forwardedMetadata |
Только для вывода. Метаданные об исходном чате пересланного сообщения. Заполняется только для типа цены |
ForwardedMetadata
| JSON-представление |
|---|
{ "conversationId": string, "conversationDisplayName": string } |
| Поля | |
|---|---|
conversationId |
Только для вывода. Название ресурса исходного чата. Формат: spaces/{space} |
conversationDisplayName |
Только для вывода. Отображаемое название исходного чата на момент пересылки сообщения. Для именованных чат-групп это название группы. Для прямой переписки это имя другого участника. Для групповых чатов без названия это сгенерированное название на основе имен участников. |
UserType
Тип пользователя Google Chat.
| Перечисления | |
|---|---|
USER_TYPE_UNSPECIFIED |
Не указано. |
HUMAN |
Пользователь-человек. |
APP |
Пользователь приложения. |
Источник
Источник прикрепленного файла.
| Перечисления | |
|---|---|
SOURCE_UNSPECIFIED |
Зарезервировано. |
DRIVE_FILE |
Файл хранится на Google Диске. |
UPLOADED_CONTENT |
Файл загружен в Chat. |
QuoteType
Тип цитаты, указывающий, является ли сообщение ответом с цитатой или пересланным сообщением.
| Перечисления | |
|---|---|
QUOTE_TYPE_UNSPECIFIED |
Зарезервировано. Неопределенный тип цитаты. |
REPLY |
Сообщение является ответом с цитированием на исходное сообщение в той же цепочке. |
FORWARD |
Сообщение переслано из другого чата или из другой цепочки в том же чате. |
Аннотации инструментов
Аннотации инструментов отправляются клиентам MCP, чтобы описать базовый риск, связанный с определенным инструментом. Большинство клиентов считают эти подсказки ненадежными, но их можно использовать, чтобы решить, когда пользователю может быть отправлен запрос на подтверждение.
Помимо строки заголовка, определены следующие логические подсказки:
readOnlyHint: если задано значение true, инструмент не изменяет свою среду. Значение по умолчанию – false.destructiveHint: если задано значение True, инструмент может выполнять деструктивные действия. Если задано значение false, инструмент может выполнять только действия по добавлению. Значение по умолчанию: true.idempotentHint. Если задано значение True, повторный вызов инструмента с теми же аргументами не будет иметь дополнительного эффекта в его среде. Значение по умолчанию – false.openWorldHint: если задано значение true, инструмент может взаимодействовать с открытым миром внешних объектов. Если false, то инструмент может взаимодействовать только с внутренними объектами. Например, инструмент веб-поиска будет открытым миром, а инструмент памяти – нет.
Destructive Hint: ❌ | Idempotent Hint: ✅ | Read Only Hint: ✅ | Open World Hint: ❌
Области авторизации
Требует одной из следующих областей применения OAuth:
https://www.googleapis.com/auth/chat.messages.readonlyhttps://www.googleapis.com/auth/chat.spaces.readonlyhttps://www.googleapis.com/auth/chat.memberships.readonlyhttps://www.googleapis.com/auth/chat.users.readstate.readonly