Ferramenta: send_message
Envia uma mensagem de chat do Google Chat para uma conversa com formatação Markdown.
Essa ferramenta usa um ID de conversa, um ID de linha de execução opcional e um texto de mensagem como entradas.
Os IDs de conversa podem ser encontrados usando a ferramenta search_conversations.
Ele retorna a mensagem criada.
O exemplo de código abaixo mostra como usar curl para chamar a ferramenta MCP send_message.
| Solicitação 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 }' |
Esquema de entrada
SendMessageRequest
| Representação JSON |
|---|
{ "conversationId": string, "threadId": string, "messageText": string, "cards": [ { object } ], "inlineCitations": [ { object ( |
| Campos | |
|---|---|
conversationId |
Obrigatório. O ID da conversa (por exemplo, "spaces/AAAA...") para onde a mensagem será enviada. |
threadId |
Opcional. O ID da conversa (por exemplo, "spaces/AAAA.../threads/BBBB...") para onde a mensagem será enviada. Se não for definido, a mensagem será enviada para uma nova conversa. |
messageText |
Obrigatório. O conteúdo principal da mensagem. A formatação pode ser adicionada usando o Markdown padrão (as tabelas NÃO são aceitas). A seguinte formatação é aceita:
|
cards[] |
Opcional. Cards anexados à mensagem. O tamanho máximo é de 32 KB por card. Cada card é representado como uma estrutura JSON que segue o formato de card do Google Chat (card do UIKit do Google Workspace / Cards v2). Para anexar cards a uma mensagem, o app do Chat precisa ser um participante do espaço. Identificação do cartão:
|
inlineCitations[] |
Opcional. Citações incorporadas referenciadas em |
footerCitedSources[] |
Opcional. As principais fontes citadas são mostradas como cards de referência na parte de baixo (rodapé) da mensagem. É permitido um máximo de 50 fontes citadas no total em todas as citações inline e fontes de rodapé em uma mensagem. |
Struct
| Representação JSON |
|---|
{ "fields": { string: value, ... } } |
| Campos | |
|---|---|
fields |
Mapa não ordenado de valores digitados dinamicamente. Um objeto com uma lista de pares |
FieldsEntry
| Representação JSON |
|---|
{ "key": string, "value": value } |
| Campos | |
|---|---|
key |
|
value |
|
Valor
| Representação JSON |
|---|
{ "nullValue": null, "numberValue": number, "stringValue": string, "boolValue": boolean, "structValue": { object }, "listValue": array } |
| Campos | |
|---|---|
Campo de união kind. O tipo de valor. kind pode ser apenas de um dos tipos a seguir: |
|
nullValue |
Representa um |
numberValue |
Representa um número JSON. Não pode ser |
stringValue |
Representa uma string JSON. |
boolValue |
Representa um booleano JSON (literal |
structValue |
Representa um objeto JSON. |
listValue |
Representa uma matriz JSON. |
ListValue
| Representação JSON |
|---|
{ "values": [ value ] } |
| Campos | |
|---|---|
values[] |
Campo repetido de valores digitados dinamicamente. |
Citação
| Representação JSON |
|---|
{
"id": string,
"citedSources": [
{
object ( |
| Campos | |
|---|---|
id |
Obrigatório. Identificador exclusivo que corresponde ao atributo |
citedSources[] |
Obrigatório. Uma ou mais fontes anexadas a este card de informações de citação. É permitido um máximo de 50 fontes citadas no total em todas as citações inline e fontes de rodapé em uma mensagem. |
CitedSource
| Representação JSON |
|---|
{ "title": string, "url": string, "snippet": string, "imageUrl": string, "footer": string } |
| Campos | |
|---|---|
title |
Obrigatório. Título em texto simples da fonte (por exemplo, "Programa de prévia para desenvolvedores do Google Workspace"). A formatação Markdown não é compatível com títulos. |
url |
Obrigatório. O URL do recurso citado (precisa ser um URL http:// ou https:// válido, por exemplo, "https://developers.google.com/workspace/preview"). |
snippet |
Opcional. Um trecho curto ou snippet diretamente da fonte. Exibido no card de informações ou no rodapé. Somente texto simples. O tamanho máximo é de 1.000 caracteres. |
imageUrl |
Opcional. URL de uma miniatura de visualização de imagem (precisa usar um URL https://). |
footer |
Opcional. Texto de atribuição adicional exibido no rodapé do card (por exemplo, nome de domínio "developers.google.com" ou nome do autor/organização). |
NullValue
Representa um null JSON.
NullValue é um sentinela que usa um tipo enumerado com apenas um valor para representar o valor nulo da união de tipos Value.
Um campo do tipo NullValue com qualquer valor diferente de 0 é considerado inválido. A maioria dos serializadores ProtoJSON emite um Value com um null_value definido como um null JSON, independentemente do valor inteiro, e, portanto, faz uma ida e volta para um valor 0.
| Tipos enumerados | |
|---|---|
NULL_VALUE |
Valor nulo. |
Esquema de saída
Resposta ao envio de uma mensagem para uma conversa do Google Chat.
SendMessageResponse
| Representação JSON |
|---|
{
"message": {
object ( |
| Campos | |
|---|---|
message |
A mensagem que foi enviada. |
ChatMessage
| Representação JSON |
|---|
{ "messageId": string, "threadId": string, "plaintextBody": string, "sender": { object ( |
| Campos | |
|---|---|
messageId |
Nome do recurso da mensagem. Formato: spaces/{space}/messages/{message} |
threadId |
A conversa a que esta mensagem pertence. Esse campo vai ficar vazio se a mensagem não estiver em uma conversa. Formato: spaces/{space}/threads/{thread} |
plaintextBody |
Corpo de texto da mensagem usando a formatação Markdown. |
sender |
O remetente da mensagem. |
createTime |
Apenas saída. Carimbo de data/hora de quando a mensagem foi criada. Formato: carimbo de data/hora ISO 8601. |
threadedReply |
Se a mensagem é uma resposta de conversa. |
attachments[] |
Anexos incluídos na mensagem. |
reactionSummaries[] |
O resumo das reações com emojis incluído na mensagem. |
quotedMessageMetadata |
Apenas saída. Informações sobre uma mensagem original que é citada ou encaminhada nesta mensagem. Observação: esse campo está em desenvolvimento e talvez ainda não esteja presente em todos os ambientes. |
Usuário
| Representação JSON |
|---|
{
"userId": string,
"displayName": string,
"email": string,
"userType": enum ( |
| Campos | |
|---|---|
userId |
Nome do recurso de um usuário do Chat. Formato: users/{user}. |
displayName |
O nome de exibição de um usuário do Chat. |
email |
O endereço de e-mail do usuário. Esse campo só é preenchido quando o tipo de usuário é HUMAN. |
userType |
O tipo do usuário. |
ChatAttachmentMetadata
| Representação JSON |
|---|
{
"attachmentId": string,
"filename": string,
"mimeType": string,
"source": enum ( |
| Campos | |
|---|---|
attachmentId |
Nome do recurso do anexo. Formato: spaces/{space}/messages/{message}/attachments/{attachment}. |
filename |
Nome do anexo. |
mimeType |
Tipo de conteúdo (tipo MIME). |
source |
A origem do anexo. |
driveFileId |
Apenas saída. O ID do arquivo do Google Drive. Preenchido apenas quando a origem é DRIVE_FILE. Usar com o MCP do Google Drive. |
ReactionSummary
| Representação JSON |
|---|
{ "emoji": string, "count": integer } |
| Campos | |
|---|---|
emoji |
A string Unicode do emoji ou o nome do emoji personalizado. |
count |
O número total de reações usando o emoji associado. |
QuotedMessageMetadata
| Representação JSON |
|---|
{ "messageId": string, "lastUpdateTime": string, "quoteType": enum ( |
| Campos | |
|---|---|
messageId |
Apenas saída. Nome do recurso da mensagem original que foi citada ou encaminhada. Formato: spaces/{space}/messages/{message} |
lastUpdateTime |
Apenas saída. Carimbo de data/hora de quando a mensagem original foi criada ou atualizada pela última vez antes de ser citada ou encaminhada. Formato: carimbo de data/hora ISO 8601. |
quoteType |
Apenas saída. O tipo de cotação. |
plaintextBody |
Apenas saída. Snapshot do corpo de texto da mensagem original no momento da citação ou do encaminhamento. Formatado usando Markdown para |
sender |
Apenas saída. O nome de exibição do autor da mensagem original. |
attachments[] |
Apenas saída. Anexos que faziam parte da mensagem original. Preenchido apenas para o tipo de cotação |
forwardedMetadata |
Apenas saída. Metadados sobre a conversa de origem da mensagem encaminhada. Preenchido apenas para o tipo de cotação |
ForwardedMetadata
| Representação JSON |
|---|
{ "conversationId": string, "conversationDisplayName": string } |
| Campos | |
|---|---|
conversationId |
Apenas saída. O nome do recurso da conversa de origem. Formato: spaces/{space} |
conversationDisplayName |
Apenas saída. O nome de exibição da conversa de origem no momento em que a mensagem foi encaminhada. Para espaços com nome, é o nome do espaço. Nas mensagens diretas individuais, é o nome do outro participante. Para grupos de chat sem nome, esse é um nome gerado com base nos nomes dos participantes. |
UserType
O tipo de usuário do Google Chat.
| Tipos enumerados | |
|---|---|
USER_TYPE_UNSPECIFIED |
Não especificado. |
HUMAN |
Usuário humano. |
APP |
Usuário do app. |
Origem
A origem do anexo.
| Tipos enumerados | |
|---|---|
SOURCE_UNSPECIFIED |
Reservado. |
DRIVE_FILE |
O arquivo é do Google Drive. |
UPLOADED_CONTENT |
O arquivo é enviado para o Chat. |
QuoteType
O tipo de citação que indica se a mensagem é uma resposta de citação ou uma mensagem encaminhada.
| Tipos enumerados | |
|---|---|
QUOTE_TYPE_UNSPECIFIED |
Reservado. Tipo de cotação indefinido. |
REPLY |
A mensagem é uma resposta com citação a uma mensagem original na mesma conversa. |
FORWARD |
A mensagem é encaminhada de uma mensagem original em outra conversa ou de uma conversa diferente na mesma conversa. |
Anotações de ferramentas
As anotações de ferramentas são enviadas aos clientes do MCP para descrever o risco básico de uma determinada ferramenta. A maioria dos clientes trata essas dicas como não confiáveis, mas elas podem ser usadas para decidir quando um pedido de confirmação pode ser enviado a um usuário.
Além da string de título, as seguintes dicas booleanas são definidas:
readOnlyHint: se for verdadeiro, a ferramenta não modifica o ambiente. (Padrão: falso).destructiveHint: se for verdadeiro, a ferramenta poderá realizar ações destrutivas. Se for falso, a ferramenta só poderá realizar ações aditivas. Padrão: verdadeiro.idempotentHint: se for verdadeiro, chamar a ferramenta repetidamente com os mesmos argumentos não terá efeito adicional no ambiente. (Padrão: falso).openWorldHint: se for verdadeiro, a ferramenta poderá interagir com um "mundo aberto" de entidades externas. Se for falso, a ferramenta só poderá interagir com entidades internas. Por exemplo, uma ferramenta de pesquisa na Web seria de mundo aberto, enquanto uma ferramenta de memória não seria.
Dica destrutiva: ❌ | Dica idempotente: ❌ | Dica somente leitura: ❌ | Dica de jogos de mundo aberto: ✅
Escopos de autorização
Requer um dos seguintes escopos do OAuth:
https://www.googleapis.com/auth/chat.messageshttps://www.googleapis.com/auth/chat.messages.create