Инструмент: 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 | Необязательный параметр. Токен страницы, полученный из предыдущего вызова функции |
Параметры поиска
| 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[] | Необязательно. Фильтрация по списку названий пространств; отображаемые названия пространств совпадут частично. Примечание: возвращаются только 5 лучших совпадений. |
conversationTypes[] | Необязательно. Фильтруйте по типу разговора. |
ConversationType
Определяет тип разговора.
| Перечисления | |
|---|---|
CONVERSATION_TYPE_UNSPECIFIED | Не указано. |
NAMED_SPACE | Названное пространство. |
GROUP_CHAT | Групповой чат с участием 3 или более человек. |
DIRECT_MESSAGE | Прямое сообщение между двумя людьми или между человеком и приложением для чата. |
Схема вывода
Ответ на запрос поиска сообщений в Google Chat. Если поле next_page_token заполнено, вызов функции SearchMessages можно повторить с этим токеном для получения следующей страницы результатов.
SearchMessagesResponse
| JSON-представление |
|---|
{
"messages": [
{
object ( |
| Поля | |
|---|---|
messages[] | Список объектов сообщений, соответствующих критериям поиска. |
nextPageToken | Токен, который можно отправить в качестве |
Сообщение в чате
| JSON-представление |
|---|
{ "messageId": string, "threadId": string, "plaintextBody": string, "sender": { object ( |
| Поля | |
|---|---|
messageId | Имя ресурса сообщения. Формат: пробелы/{пробел}/сообщения/{сообщение} |
threadId | Ветка обсуждения, к которой относится это сообщение. Если сообщение не относится к какой-либо ветке, это поле будет пустым. Формат: пробелы/{пробел}/ветки/{ветка} |
plaintextBody | Текст сообщения, оформленный в формате Markdown. |
sender | Отправитель сообщения. |
createTime | Только вывод. Отметка времени создания сообщения. |
threadedReply | Является ли сообщение ответом на сообщение в ветке обсуждения. |
attachments[] | Приложения, вложенные в сообщение. |
reactionSummaries[] | Сводка реакций с помощью эмодзи, включенная в сообщение. |
Пользователь
| JSON-представление |
|---|
{
"userId": string,
"displayName": string,
"email": string,
"userType": enum ( |
| Поля | |
|---|---|
userId | Имя ресурса пользователя чата. Формат: users/{user}. |
displayName | Отображаемое имя пользователя чата. |
email | Адрес электронной почты пользователя. Это поле заполняется только в том случае, если тип пользователя — HUMAN. |
userType | Тип пользователя. |
Метаданные вложения чата
| JSON-представление |
|---|
{
"attachmentId": string,
"filename": string,
"mimeType": string,
"source": enum ( |
| Поля | |
|---|---|
attachmentId | Имя ресурса вложения. Формат: пробелы/{пробел}/сообщения/{сообщение}/вложения/{вложение}. |
filename | Название вложенного файла. |
mimeType | Тип содержимого (MIME-тип). |
source | Источник вложения. |
РеакцияКраткое содержание
| JSON-представление |
|---|
{ "emoji": string, "count": integer } |
| Поля | |
|---|---|
emoji | Строка в формате Юникода для эмодзи или пользовательское имя эмодзи. |
count | Общее количество реакций с использованием соответствующего эмодзи. |
Тип пользователя
Тип пользователя Google Chat.
| Перечисления | |
|---|---|
USER_TYPE_UNSPECIFIED | Не указано. |
HUMAN | Пользователь-человек. |
APP | Пользователь приложения. |
Источник
Источник вложения.
| Перечисления | |
|---|---|
SOURCE_UNSPECIFIED | Сдержанный. |
DRIVE_FILE | Это файл из Google Диска. |
UPLOADED_CONTENT | Файл загружен в чат. |
Аннотации инструментов
Аннотации к инструментам отправляются клиентам MCP для описания основных рисков, связанных с данным инструментом. Большинство клиентов считают эти подсказки недостоверными, но они могут использоваться для определения момента отправки пользователю запроса на подтверждение.
Наряду со строкой заголовка, определены следующие логические подсказки:
-
readOnlyHint: Если true, инструмент не изменяет свою среду. По умолчанию: false. -
destructiveHint: Если true, то инструмент может выполнять деструктивные действия. Если false, то инструмент может выполнять только аддитивные действия. По умолчанию: true. -
idempotentHint: Если true, то многократный вызов инструмента с одними и теми же аргументами не окажет дополнительного влияния на его окружение. По умолчанию: false. -
openWorldHint: Если true, то инструмент может взаимодействовать с «открытым миром» внешних объектов. Если false, то инструмент может взаимодействовать только с внутренними объектами. Например, инструмент веб-поиска будет представлять собой открытый мир, а инструмент для работы с памятью — нет.
Подсказка о разрушительном эффекте: ❌ | Подсказка об идемпотентности: ✅ | Подсказка только для чтения: ✅ | Подсказка об открытом мире: ❌
Области полномочий
Требуется один из следующих диапазонов аутентификации OAuth:
-
https://www.googleapis.com/auth/chat.messages.readonly -
https://www.googleapis.com/auth/chat.spaces.readonly -
https://www.googleapis.com/auth/chat.memberships.readonly -
https://www.googleapis.com/auth/chat.users.readstate.readonly