MCP Tools Reference: chatmcp.googleapis.com

Инструмент: 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 (Citation)
    }
  ],
  "footerCitedSources": [
    {
      object (CitedSource)
    }
  ]
}
Поля
conversationId

string

Обязательно. Идентификатор чата (например, spaces/AAAA...), в который нужно отправить сообщение.

threadId

string

Необязательное поле. Идентификатор цепочки (например, "spaces/AAAA.../threads/BBBB..."), в которую нужно отправить сообщение. Если не задано, сообщение будет отправлено в новую цепочку.

messageText

string

Обязательно. Основное содержание сообщения. Для форматирования можно использовать стандартную разметку Markdown (таблицы не поддерживаются). Поддерживаются следующие форматы:

  • Полужирный: **text**
  • Курсив: *text* или _text_.
  • Зачеркнутый: ~~text~~
  • Моноширинный шрифт: text
  • Блок моноширинного шрифта:
```
line 1
line 2
```
  • Маркированный список
* item 1
* item 2
  • Упорядоченный список:
1. item 1
2. item 2
  • Блок цитаты: > quoted text
  • Гиперссылка: [label](url)
  • Упоминание пользователя. Используйте самозакрывающийся HTML-тег chat-user с атрибутами data-email="user@example.com" или data-user="users/USER_ID". Рекомендуется использовать атрибут data-user со значением USER_ID, если оно известно. В противном случае используйте атрибут data-email с адресом электронной почты пользователя. Если вы используете атрибут data-user, не забудьте добавить префикс users/, который есть в значениях, возвращаемых другими инструментами. Примечание. В одном сообщении можно упомянуть не более 10 пользователей. Строго запрещено упоминать всех пользователей (например, с помощью @all или HTML-тега с users/all).
  • Собственные эмодзи. Используйте самозакрывающийся HTML-тег chat-emoji с атрибутами data-custom-emoji="customEmojis/abc" или data-emoji-name=":xyz:".
  • Цитата. Заключите цитируемый текст в HTML-тег chat-citation с атрибутом data-id, соответствующим идентификатору цитаты. Если в теге chat-citation есть атрибут data-id, который не соответствует ни одному значению Citation.id, тег игнорируется, а текст отображается как обычный текст. Примечание. В одном сообщении может быть не более 20 встроенных цитат.
cards[]

object (Struct format)

Необязательное поле. Карточки, прикрепленные к сообщению. Максимальный размер – 32 КБ на карточку. Каждая карточка представлена в виде структуры JSON в формате карточки Google Chat (карточка Google Workspace UIKit/Cards v2). Чтобы прикрепить карточки к сообщению, приложение Chat должно быть участником чат-группы. Изображения в карточках не поддерживаются.

Идентификация карты:

  • Строковое поле name верхнего уровня в каждой карточке служит ее идентификатором.
  • Если к сообщению прикреплено несколько карточек, у каждой из них ДОЛЖЕН быть уникальный непустой идентификатор name.
inlineCitations[]

object (Citation)

Необязательное поле. Внутритекстовые сноски, на которые ссылается message_text через теги chat-citation. В одном сообщении может быть не более 20 встроенных цитат. Внутритекстовые цитаты без ссылок (те, у которых нет соответствующего тега chat-citation в message_text) игнорируются и не вызывают ошибку проверки.

footerCitedSources[]

object (CitedSource)

Необязательное поле. Источники верхнего уровня, на которые ссылается Gemini, показываются в виде карточек в нижней части сообщения. Всего в сообщении может быть не более 50 источников, включая внутритекстовые ссылки и источники в нижнем колонтитуле.

Структура

JSON-представление
{
  "fields": {
    string: value,
    ...
  }
}
Поля
fields

map (key: string, value: value (Value format))

Неупорядоченная карта динамически типизированных значений.

Объект содержит список из нескольких пар ("key": value). Пример: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

FieldsEntry

JSON-представление
{
  "key": string,
  "value": value
}
Поля
key

string

value

value (Value format)

Значение

JSON-представление
{

  "nullValue": null,
  "numberValue": number,
  "stringValue": string,
  "boolValue": boolean,
  "structValue": {
    object
  },
  "listValue": array
}
Поля
Объединенное поле kind. Тип значения. kind может иметь одно из следующих значений:
nullValue

null

Представляет JSON null.

numberValue

number

Представляет число JSON. Не должно быть NaN, Infinity или -Infinity, поскольку они не поддерживаются в JSON. Кроме того, в этом формате нельзя представить большие значения Int64, поскольку формат JSON обычно не поддерживает их в своем числовом типе.

stringValue

string

Представляет строку JSON.

boolValue

boolean

Представляет логическое значение JSON (литерал true или false в JSON).

structValue

object (Struct format)

Представляет объект JSON.

listValue

array (ListValue format)

Представляет массив JSON.

ListValue

JSON-представление
{
  "values": [
    value
  ]
}
Поля
values[]

value (Value format)

Повторяющееся поле динамически типизированных значений.

Цитата

JSON-представление
{
  "id": string,
  "citedSources": [
    {
      object (CitedSource)
    }
  ]
}
Поля
id

string

Обязательно. Уникальный идентификатор, соответствующий атрибуту data-id в теге chat-citation (например, цитируемый текст, заключенный в тег chat-citation с атрибутом data-id="ID") в message_text. Должно состоять только из букв ASCII, цифр, символов подчеркивания или дефисов (от 1 до 63 символов). Оно должно быть уникальным среди всех цитат в сообщении.

citedSources[]

object (CitedSource)

Обязательно. Один или несколько источников, прикрепленных к этой всплывающей карточке цитаты. Всего в сообщении может быть не более 50 источников, включая внутритекстовые ссылки и источники в нижнем колонтитуле.

CitedSource

JSON-представление
{
  "title": string,
  "url": string,
  "snippet": string,
  "imageUrl": string,
  "footer": string
}
Поля
title

string

Обязательно. Название источника в виде обычного текста (например, "Программа предварительного доступа для разработчиков Google Workspace"). Форматирование Markdown не поддерживается в заголовках.

url

string

Обязательно. URL цитируемого ресурса (должен быть действительным URL с протоколом http:// или https://, например "https://developers.google.com/workspace/preview").

snippet

string

Необязательное поле. Короткий отрывок или фрагмент непосредственно из источника. Отображается во всплывающей карточке или нижнем колонтитуле. Только обычный текст. Максимальная длина – 1000 символов.

imageUrl

string

Необязательное поле. URL значка предварительного просмотра изображения (должен начинаться с https://).

footer

string

Необязательное поле. Дополнительный текст атрибуции, который показывается в нижнем колонтитуле карточки (например, доменное имя 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 (ChatMessage)
  }
}
Поля
message

object (ChatMessage)

Отправленное сообщение.

ChatMessage

JSON-представление
{
  "messageId": string,
  "threadId": string,
  "plaintextBody": string,
  "sender": {
    object (User)
  },
  "createTime": string,
  "threadedReply": boolean,
  "attachments": [
    {
      object (ChatAttachmentMetadata)
    }
  ],
  "reactionSummaries": [
    {
      object (ReactionSummary)
    }
  ],
  "quotedMessageMetadata": {
    object (QuotedMessageMetadata)
  }
}
Поля
messageId

string

Название ресурса сообщения. Формат: spaces/{space}/messages/{message}

threadId

string

Цепочка, к которой относится это сообщение. Если сообщение не входит в цепочку, это поле будет пустым. Формат: spaces/{space}/threads/{thread}

plaintextBody

string

Текст сообщения с форматированием Markdown.

sender

object (User)

Отправитель сообщения.

createTime

string

Только для вывода. Временная метка создания сообщения. Формат: временная метка ISO 8601.

threadedReply

boolean

Является ли сообщение ответом в цепочке.

attachments[]

object (ChatAttachmentMetadata)

Прикрепленные к письму файлы.

reactionSummaries[]

object (ReactionSummary)

Сводка реакций с эмодзи, включенная в сообщение.

quotedMessageMetadata

object (QuotedMessageMetadata)

Только для вывода. Информация об исходном письме, которое цитируется или пересылается в этом письме. Примечание. Это поле находится на стадии разработки и может быть доступно не во всех средах.

Пользователь

JSON-представление
{
  "userId": string,
  "displayName": string,
  "email": string,
  "userType": enum (UserType)
}
Поля
userId

string

Название ресурса пользователя Chat. Формат: users/{user}.

displayName

string

Отображаемое имя пользователя Chat.

email

string

Адрес электронной почты пользователя. Это поле заполняется, только если тип пользователя – HUMAN.

userType

enum (UserType)

Тип пользователя.

ChatAttachmentMetadata

JSON-представление
{
  "attachmentId": string,
  "filename": string,
  "mimeType": string,
  "source": enum (Source),
  "driveFileId": string
}
Поля
attachmentId

string

Название ресурса прикрепленного файла. Формат: spaces/{space}/messages/{message}/attachments/{attachment}.

filename

string

Имя прикрепленного файла.

mimeType

string

Тип контента (MIME-тип).

source

enum (Source)

Источник прикрепленного файла.

driveFileId

string

Только для вывода. Идентификатор файла на Google Диске. Заполняется, только если источником является DRIVE_FILE. Используйте с MCP Google Диска.

ReactionSummary

JSON-представление
{
  "emoji": string,
  "count": integer
}
Поля
emoji

string

Строка Unicode для эмодзи или название пользовательского эмодзи.

count

integer

Общее количество реакций с использованием связанного эмодзи.

QuotedMessageMetadata

JSON-представление
{
  "messageId": string,
  "lastUpdateTime": string,
  "quoteType": enum (QuoteType),
  "plaintextBody": string,
  "sender": string,
  "attachments": [
    {
      object (ChatAttachmentMetadata)
    }
  ],
  "forwardedMetadata": {
    object (ForwardedMetadata)
  }
}
Поля
messageId

string

Только для вывода. Название ресурса исходного сообщения, которое цитируется или пересылается. Формат: spaces/{space}/messages/{message}

lastUpdateTime

string

Только для вывода. Временная метка создания или последнего обновления исходного сообщения до того, как оно было процитировано или переслано. Формат: временная метка ISO 8601.

quoteType

enum (QuoteType)

Только для вывода. Тип цитаты.

plaintextBody

string

Только для вывода. Копия текста исходного письма на момент цитирования или пересылки. Форматирование с помощью Markdown для FORWARD и обычного текста для REPLY.

sender

string

Только для вывода. Отображаемое имя автора исходного сообщения.

attachments[]

object (ChatAttachmentMetadata)

Только для вывода. Прикрепленные файлы, которые были частью исходного сообщения. Заполняется только для типа цены FORWARD.

forwardedMetadata

object (ForwardedMetadata)

Только для вывода. Метаданные об исходном чате пересланного сообщения. Заполняется только для типа цены FORWARD.

ForwardedMetadata

JSON-представление
{
  "conversationId": string,
  "conversationDisplayName": string
}
Поля
conversationId

string

Только для вывода. Название ресурса исходного чата. Формат: spaces/{space}

conversationDisplayName

string

Только для вывода. Отображаемое название исходного чата на момент пересылки сообщения. Для именованных чат-групп это название группы. Для прямой переписки это имя другого участника. Для групповых чатов без названия это сгенерированное название на основе имен участников.

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
  • https://www.googleapis.com/auth/chat.messages.create