MCP Tools Reference: chatmcp.googleapis.com

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 (Citation)
    }
  ],
  "footerCitedSources": [
    {
      object (CitedSource)
    }
  ]
}
Campos
conversationId

string

Obrigatório. O ID da conversa (por exemplo, "spaces/AAAA...") para onde a mensagem será enviada.

threadId

string

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

string

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:

  • Negrito: **text**
  • Itálico: *text* ou _text_
  • Tachado: ~~text~~
  • Fonte monoespaçada: text
  • Bloco monoespaçado:
```
line 1
line 2
```
  • Lista com marcadores:
* item 1
* item 2
  • Lista ordenada:
1. item 1
2. item 2
  • Citação longa: > quoted text
  • Hiperlink: [label](url)
  • Mencionar usuário: use uma tag HTML de fechamento automático chat-user com os atributos data-email="user@example.com" ou data-user="users/USER_ID". Dê preferência ao atributo data-user com USER_ID, se conhecido, e use o atributo data-email com o e-mail do usuário como alternativa. Se você usar o atributo data-user, inclua o prefixo users/ visto em outros valores de retorno da ferramenta. Observação: são permitidas no máximo 10 menções por mensagem. É estritamente proibido mencionar todos os usuários (por exemplo, usando @all ou uma tag HTML com users/all).
  • Emoji personalizado: use uma tag HTML de fechamento automático chat-emoji com os atributos data-custom-emoji="customEmojis/abc" ou data-emoji-name=":xyz:".
  • Citação: coloque o texto citado em uma tag HTML chat-citation com o atributo data-id correspondente ao ID da citação. Se uma tag chat-citation tiver um data-id que não corresponda a nenhum Citation.id, ela será ignorada, e o texto envolvido será renderizado como texto simples. Observação: são permitidas no máximo 20 citações inline por mensagem.
cards[]

object (Struct format)

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:

  • O campo de string name de nível superior em cada card serve como identificador.
  • Se vários cards estiverem anexados a uma mensagem, cada um DEVE especificar um name exclusivo e não vazio.
inlineCitations[]

object (Citation)

Opcional. Citações incorporadas referenciadas em message_text por tags chat-citation. São permitidas no máximo 20 citações inline por mensagem. As citações inline não referenciadas (aquelas sem uma tag chat-citation correspondente em message_text) são ignoradas e não causam um erro de validação.

footerCitedSources[]

object (CitedSource)

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

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

Mapa não ordenado de valores digitados dinamicamente.

Um objeto com uma lista de pares "key": value. Exemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

FieldsEntry

Representação JSON
{
  "key": string,
  "value": value
}
Campos
key

string

value

value (Value format)

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

null

Representa um null JSON.

numberValue

number

Representa um número JSON. Não pode ser NaN, Infinity ou -Infinity, porque eles não são compatíveis com JSON. Isso também não pode representar valores Int64 grandes, já que o formato JSON geralmente não os aceita no tipo de número.

stringValue

string

Representa uma string JSON.

boolValue

boolean

Representa um booleano JSON (literal true ou false em JSON).

structValue

object (Struct format)

Representa um objeto JSON.

listValue

array (ListValue format)

Representa uma matriz JSON.

ListValue

Representação JSON
{
  "values": [
    value
  ]
}
Campos
values[]

value (Value format)

Campo repetido de valores digitados dinamicamente.

Citação

Representação JSON
{
  "id": string,
  "citedSources": [
    {
      object (CitedSource)
    }
  ]
}
Campos
id

string

Obrigatório. Identificador exclusivo que corresponde ao atributo data-id na tag chat-citation (por exemplo, envolvendo o texto citado com chat-citation e o atributo data-id="ID") em message_text. Precisa conter apenas letras ASCII, dígitos, sublinhados ou hifens (de 1 a 63 caracteres). Precisa ser exclusivo entre todas as citações na mensagem.

citedSources[]

object (CitedSource)

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

string

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

string

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

string

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

string

Opcional. URL de uma miniatura de visualização de imagem (precisa usar um URL https://).

footer

string

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 (ChatMessage)
  }
}
Campos
message

object (ChatMessage)

A mensagem que foi enviada.

ChatMessage

Representação JSON
{
  "messageId": string,
  "threadId": string,
  "plaintextBody": string,
  "sender": {
    object (User)
  },
  "createTime": string,
  "threadedReply": boolean,
  "attachments": [
    {
      object (ChatAttachmentMetadata)
    }
  ],
  "reactionSummaries": [
    {
      object (ReactionSummary)
    }
  ],
  "quotedMessageMetadata": {
    object (QuotedMessageMetadata)
  }
}
Campos
messageId

string

Nome do recurso da mensagem. Formato: spaces/{space}/messages/{message}

threadId

string

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

string

Corpo de texto da mensagem usando a formatação Markdown.

sender

object (User)

O remetente da mensagem.

createTime

string

Apenas saída. Carimbo de data/hora de quando a mensagem foi criada. Formato: carimbo de data/hora ISO 8601.

threadedReply

boolean

Se a mensagem é uma resposta de conversa.

attachments[]

object (ChatAttachmentMetadata)

Anexos incluídos na mensagem.

reactionSummaries[]

object (ReactionSummary)

O resumo das reações com emojis incluído na mensagem.

quotedMessageMetadata

object (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 (UserType)
}
Campos
userId

string

Nome do recurso de um usuário do Chat. Formato: users/{user}.

displayName

string

O nome de exibição de um usuário do Chat.

email

string

O endereço de e-mail do usuário. Esse campo só é preenchido quando o tipo de usuário é HUMAN.

userType

enum (UserType)

O tipo do usuário.

ChatAttachmentMetadata

Representação JSON
{
  "attachmentId": string,
  "filename": string,
  "mimeType": string,
  "source": enum (Source),
  "driveFileId": string
}
Campos
attachmentId

string

Nome do recurso do anexo. Formato: spaces/{space}/messages/{message}/attachments/{attachment}.

filename

string

Nome do anexo.

mimeType

string

Tipo de conteúdo (tipo MIME).

source

enum (Source)

A origem do anexo.

driveFileId

string

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

string

A string Unicode do emoji ou o nome do emoji personalizado.

count

integer

O número total de reações usando o emoji associado.

QuotedMessageMetadata

Representação JSON
{
  "messageId": string,
  "lastUpdateTime": string,
  "quoteType": enum (QuoteType),
  "plaintextBody": string,
  "sender": string,
  "attachments": [
    {
      object (ChatAttachmentMetadata)
    }
  ],
  "forwardedMetadata": {
    object (ForwardedMetadata)
  }
}
Campos
messageId

string

Apenas saída. Nome do recurso da mensagem original que foi citada ou encaminhada. Formato: spaces/{space}/messages/{message}

lastUpdateTime

string

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

enum (QuoteType)

Apenas saída. O tipo de cotação.

plaintextBody

string

Apenas saída. Snapshot do corpo de texto da mensagem original no momento da citação ou do encaminhamento. Formatado usando Markdown para FORWARD e texto simples para REPLY.

sender

string

Apenas saída. O nome de exibição do autor da mensagem original.

attachments[]

object (ChatAttachmentMetadata)

Apenas saída. Anexos que faziam parte da mensagem original. Preenchido apenas para o tipo de cotação FORWARD.

forwardedMetadata

object (ForwardedMetadata)

Apenas saída. Metadados sobre a conversa de origem da mensagem encaminhada. Preenchido apenas para o tipo de cotação FORWARD.

ForwardedMetadata

Representação JSON
{
  "conversationId": string,
  "conversationDisplayName": string
}
Campos
conversationId

string

Apenas saída. O nome do recurso da conversa de origem. Formato: spaces/{space}

conversationDisplayName

string

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