Инструмент: send_message
Отправляет сообщение Google Chat в чат с форматированием Markdown.
Для работы инструмента требуется идентификатор чата, необязательный идентификатор цепочки и текст сообщения.
Идентификаторы чатов можно найти с помощью инструмента search_conversations.
Она возвращает созданное сообщение.
В примере кода ниже показано, как использовать curl для вызова инструмента MCP send_message.
| Запрос 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": "send_message", "arguments": { // Provide these details according to the MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' |
Схема ввода
SendMessageRequest
| JSON-представление |
|---|
{ "conversationId": string, "threadId": string, "messageText": string, "cards": [ { object } ], "inlineCitations": [ { object ( |
| Поля | |
|---|---|
conversationId |
Обязательно. Идентификатор чата (например, spaces/AAAA...), в который нужно отправить сообщение. |
threadId |
Необязательное поле. Идентификатор цепочки (например, "spaces/AAAA.../threads/BBBB..."), в которую нужно отправить сообщение. Если не задано, сообщение будет отправлено в новую цепочку. |
messageText |
Обязательно. Основное содержание сообщения. Для форматирования можно использовать стандартную разметку Markdown (таблицы не поддерживаются). Поддерживаются следующие форматы:
|
cards[] |
Необязательное поле. Карточки, прикрепленные к сообщению. Максимальный размер – 32 КБ на карточку. Каждая карточка представлена в виде структуры JSON в формате карточки Google Chat (карточка Google Workspace UIKit/Cards v2). Чтобы прикрепить карточки к сообщению, приложение Chat должно быть участником чат-группы. Изображения в карточках не поддерживаются. Идентификация карты:
|
inlineCitations[] |
Необязательное поле. Внутритекстовые сноски, на которые ссылается |
footerCitedSources[] |
Необязательное поле. Источники верхнего уровня, на которые ссылается Gemini, показываются в виде карточек в нижней части сообщения. Всего в сообщении может быть не более 50 источников, включая внутритекстовые ссылки и источники в нижнем колонтитуле. |
Структура
| JSON-представление |
|---|
{ "fields": { string: value, ... } } |
| Поля | |
|---|---|
fields |
Неупорядоченная карта динамически типизированных значений. Объект содержит список из нескольких пар ( |
FieldsEntry
| JSON-представление |
|---|
{ "key": string, "value": value } |
| Поля | |
|---|---|
key |
|
value |
|
Значение
| JSON-представление |
|---|
{ "nullValue": null, "numberValue": number, "stringValue": string, "boolValue": boolean, "structValue": { object }, "listValue": array } |
| Поля | |
|---|---|
Объединенное поле kind. Тип значения. kind может иметь одно из следующих значений: |
|
nullValue |
Представляет JSON |
numberValue |
Представляет число JSON. Не должно быть |
stringValue |
Представляет строку JSON. |
boolValue |
Представляет логическое значение JSON (литерал |
structValue |
Представляет объект JSON. |
listValue |
Представляет массив JSON. |
ListValue
| JSON-представление |
|---|
{ "values": [ value ] } |
| Поля | |
|---|---|
values[] |
Повторяющееся поле динамически типизированных значений. |
Цитата
| JSON-представление |
|---|
{
"id": string,
"citedSources": [
{
object ( |
| Поля | |
|---|---|
id |
Обязательно. Уникальный идентификатор, соответствующий атрибуту |
citedSources[] |
Обязательно. Один или несколько источников, прикрепленных к этой всплывающей карточке цитаты. Всего в сообщении может быть не более 50 источников, включая внутритекстовые ссылки и источники в нижнем колонтитуле. |
CitedSource
| JSON-представление |
|---|
{ "title": string, "url": string, "snippet": string, "imageUrl": string, "footer": string } |
| Поля | |
|---|---|
title |
Обязательно. Название источника в виде обычного текста (например, "Программа предварительного доступа для разработчиков Google Workspace"). Форматирование Markdown не поддерживается в заголовках. |
url |
Обязательно. URL цитируемого ресурса (должен быть действительным URL с протоколом http:// или https://, например "https://developers.google.com/workspace/preview"). |
snippet |
Необязательное поле. Короткий отрывок или фрагмент непосредственно из источника. Отображается во всплывающей карточке или нижнем колонтитуле. Только обычный текст. Максимальная длина – 1000 символов. |
imageUrl |
Необязательное поле. URL значка предварительного просмотра изображения (должен начинаться с https://). |
footer |
Необязательное поле. Дополнительный текст атрибуции, который показывается в нижнем колонтитуле карточки (например, доменное имя developers.google.com или имя автора/название организации). |
NullValue
Представляет JSON null.
NullValue – это сторожевое значение, использующее перечисление только с одним значением для представления нулевого значения для объединения типов Value.
Поле типа NullValue с любым значением, кроме 0, считается недопустимым. Большинство сериализаторов ProtoJSON будут выдавать Value с null_value, заданным как JSON null, независимо от целочисленного значения, и поэтому будут округлять до значения 0.
| Перечисления | |
|---|---|
NULL_VALUE |
Нулевое значение. |
Схема вывода
Ответ на отправку сообщения в чат Google Chat.
SendMessageResponse
| JSON-представление |
|---|
{
"message": {
object ( |
| Поля | |
|---|---|
message |
Отправленное сообщение. |
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.messageshttps://www.googleapis.com/auth/chat.messages.create