MCP Tools Reference: chatmcp.googleapis.com

Herramienta: send_message

Envía un mensaje de Google Chat a una conversación con formato de Markdown.

Esta herramienta usa un ID de conversación, un ID de conversación opcional y un texto de mensaje como entradas.

Los IDs de conversación se pueden encontrar con la herramienta search_conversations.

Devuelve el mensaje creado.

En la siguiente muestra de código, se indica cómo usar curl para llamar a la herramienta de MCP send_message.

Solicitud de 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

Representación JSON
{
  "conversationId": string,
  "threadId": string,
  "messageText": string,
  "cards": [
    {
      object
    }
  ],
  "inlineCitations": [
    {
      object (Citation)
    }
  ],
  "footerCitedSources": [
    {
      object (CitedSource)
    }
  ]
}
Campos
conversationId

string

Obligatorio. Es el ID de la conversación (p.ej., "spaces/AAAA...") a la que se enviará el mensaje.

threadId

string

Opcional. Es el ID de la conversación (p.ej., "spaces/AAAA.../threads/BBBB...") a la que se enviará el mensaje. Si no se establece, el mensaje se enviará a una conversación nueva.

messageText

string

Obligatorio. Es el contenido principal del mensaje. Se puede agregar formato con Markdown estándar (ten en cuenta que NO se admiten tablas). Se admite el siguiente formato:

  • Negrita: **text**
  • Cursiva: *text* o _text_
  • Tachado: ~~text~~
  • Monospace: text
  • Bloque de monoespacio:
```
line 1
line 2
```
  • Lista con viñetas:
* item 1
* item 2
  • Lista ordenada:
1. item 1
2. item 2
  • Cita en bloque: > quoted text
  • Hipervínculo: [label](url)
  • Mencionar usuario: Usa una etiqueta HTML de cierre automático chat-user con los atributos data-email="user@example.com" o data-user="users/USER_ID". Se prefiere el atributo data-user con USER_ID si se conoce y, de lo contrario, se recurre al atributo data-email con el correo electrónico del usuario. Si usas el atributo data-user, asegúrate de incluir el prefijo users/ que se ve en otros valores que muestra la herramienta. Nota: Se permite un máximo de 10 menciones por mensaje. Está estrictamente prohibido mencionar a todos los usuarios (p.ej., con @all o una etiqueta HTML con users/all).
  • Emoji personalizado: Usa una etiqueta HTML de cierre automático chat-emoji con los atributos data-custom-emoji="customEmojis/abc" o data-emoji-name=":xyz:".
  • Cita: Encierra el texto citado en una etiqueta HTML chat-citation con el atributo data-id que coincida con el ID de la cita. Si una etiqueta chat-citation tiene un data-id que no coincide con ningún Citation.id, se ignora la etiqueta y el texto unido se renderiza como texto sin formato. Nota: Se permite un máximo de 20 citas intercaladas por mensaje.
cards[]

object (Struct format)

Opcional. Son las tarjetas adjuntas al mensaje. El tamaño máximo es de 32 KB por tarjeta. Cada tarjeta se representa como un struct JSON que sigue el formato de tarjeta de Google Chat (tarjeta de UIKit de Google Workspace/tarjetas v2). Para adjuntar tarjetas a un mensaje, la app de Chat debe ser miembro del espacio.

Identificación de la tarjeta:

  • El campo de cadena name de nivel superior de cada tarjeta sirve como su identificador.
  • Si se adjuntan varias tarjetas a un mensaje, cada una DEBE especificar un name único y no vacío.
inlineCitations[]

object (Citation)

Opcional. Citas intercaladas a las que se hace referencia en message_text a través de etiquetas chat-citation. Se permite un máximo de 20 citas intercaladas por mensaje. Las citas intercaladas sin referencia (aquellas que no tienen una etiqueta chat-citation coincidente en message_text) se ignoran y no causan un error de validación.

footerCitedSources[]

object (CitedSource)

Opcional. Fuentes citadas de nivel superior que se muestran como tarjetas de referencia en la parte inferior (pie de página) del mensaje. Se permite un máximo de 50 fuentes citadas en total en todas las citas intercaladas y las fuentes al pie de página de un mensaje.

Struct

Representación JSON
{
  "fields": {
    string: value,
    ...
  }
}
Campos
fields

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

Es un mapa sin ordenar de valores con tipo dinámico.

Un objeto que contiene una lista de pares "key": value. Ejemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

FieldsEntry

Representación JSON
{
  "key": string,
  "value": value
}
Campos
key

string

value

value (Value format)

Valor

Representación JSON
{

  "nullValue": null,
  "numberValue": number,
  "stringValue": string,
  "boolValue": boolean,
  "structValue": {
    object
  },
  "listValue": array
}
Campos
Campo de unión kind. Es el tipo de valor. kind puede ser solo uno de los parámetros siguientes:
nullValue

null

Representa un null JSON.

numberValue

number

Representa un número JSON. No debe ser NaN, Infinity ni -Infinity, ya que no se admiten en JSON. Tampoco puede representar valores Int64 grandes, ya que el formato JSON, por lo general, no los admite en su tipo de número.

stringValue

string

Representa una cadena JSON.

boolValue

boolean

Representa un booleano JSON (literal true o false en JSON).

structValue

object (Struct format)

Representa un objeto JSON.

listValue

array (ListValue format)

Representa un array JSON.

ListValue

Representación JSON
{
  "values": [
    value
  ]
}
Campos
values[]

value (Value format)

Es un campo repetido de valores con tipo dinámico.

Cita

Representación JSON
{
  "id": string,
  "citedSources": [
    {
      object (CitedSource)
    }
  ]
}
Campos
id

string

Obligatorio. Identificador único que coincide con el atributo data-id de la etiqueta chat-citation (p.ej., unir el texto citado con chat-citation y el atributo data-id="ID") en message_text. Debe constar solo de letras ASCII, dígitos, guiones bajos o guiones (de 1 a 63 caracteres). Debe ser único entre todas las citas del mensaje.

citedSources[]

object (CitedSource)

Obligatorio. Una o más fuentes adjuntas a esta tarjeta de cita flotante. Se permite un máximo de 50 fuentes citadas en total en todas las citas intercaladas y las fuentes al pie de página de un mensaje.

CitedSource

Representación JSON
{
  "title": string,
  "url": string,
  "snippet": string,
  "imageUrl": string,
  "footer": string
}
Campos
title

string

Obligatorio. Es el título en texto sin formato de la fuente (p.ej., "Programa de versión preliminar para desarrolladores de Google Workspace"). No se admite el formato Markdown en los títulos.

url

string

Obligatorio. Es la URL del recurso citado (debe ser una URL http:// o https:// válida, p.ej., "https://developers.google.com/workspace/preview").

snippet

string

Opcional. Un extracto o fragmento breve directamente de la fuente. Se muestra en la tarjeta flotante o en el pie de página. Solo texto sin formato. La longitud máxima es de 1,000 caracteres.

imageUrl

string

Opcional. Es la URL de una miniatura de vista previa de la imagen (debe usar una URL https://).

footer

string

Opcional. Texto de atribución adicional que se muestra en el pie de página de la tarjeta (p.ej., el nombre de dominio "developers.google.com" o el nombre del autor o de la organización).

NullValue

Representa un null JSON.

NullValue es un centinela que usa una enumeración con un solo valor para representar el valor nulo de la unión de tipos Value.

Un campo de tipo NullValue con cualquier valor que no sea 0 se considera no válido. La mayoría de los serializadores de ProtoJSON emitirán un Value con un null_value establecido como un null de JSON, independientemente del valor entero, por lo que se realizará un recorrido de ida y vuelta a un valor 0.

Enums
NULL_VALUE Valor nulo.

Esquema de salida

Respuesta al envío de un mensaje a una conversación de Google Chat.

SendMessageResponse

Representación JSON
{
  "message": {
    object (ChatMessage)
  }
}
Campos
message

object (ChatMessage)

Es el mensaje que se envió.

ChatMessage

Representación 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

Es el nombre del recurso del mensaje. Formato: spaces/{space}/messages/{message}

threadId

string

Es la conversación a la que pertenece este mensaje. Este campo estará vacío si el mensaje no está en un hilo. Formato: spaces/{space}/threads/{thread}

plaintextBody

string

Es el cuerpo del mensaje con formato de Markdown.

sender

object (User)

Es el remitente del mensaje.

createTime

string

Solo salida. Es la marca de tiempo de cuando se creó el mensaje. Formato: Marca de tiempo ISO 8601.

threadedReply

boolean

Indica si el mensaje es una respuesta en una conversación.

attachments[]

object (ChatAttachmentMetadata)

Son los archivos adjuntos que se incluyen en el mensaje.

reactionSummaries[]

object (ReactionSummary)

Es el resumen de las reacciones con emojis que se incluyen en el mensaje.

quotedMessageMetadata

object (QuotedMessageMetadata)

Solo salida. Información sobre un mensaje original que se cita o reenvía en este mensaje. Nota: Este campo está en desarrollo y es posible que aún no esté presente en todos los entornos.

Usuario

Representación JSON
{
  "userId": string,
  "displayName": string,
  "email": string,
  "userType": enum (UserType)
}
Campos
userId

string

Es el nombre del recurso de un usuario de Chat. Formato: users/{user}.

displayName

string

Es el nombre visible de un usuario de Chat.

email

string

Es la dirección de correo electrónico del usuario. Este campo solo se completa cuando el tipo de usuario es HUMAN.

userType

enum (UserType)

Es el tipo de usuario.

ChatAttachmentMetadata

Representación JSON
{
  "attachmentId": string,
  "filename": string,
  "mimeType": string,
  "source": enum (Source),
  "driveFileId": string
}
Campos
attachmentId

string

Es el nombre del recurso del archivo adjunto. Formato: spaces/{space}/messages/{message}/attachments/{attachment}.

filename

string

Nombre del archivo adjunto.

mimeType

string

Tipo de contenido (tipo de MIME)

source

enum (Source)

Es la fuente del archivo adjunto.

driveFileId

string

Solo salida. Es el ID del archivo de Google Drive. Solo se propaga cuando la fuente es DRIVE_FILE. Se usa con el MCP de Google Drive.

ReactionSummary

Representación JSON
{
  "emoji": string,
  "count": integer
}
Campos
emoji

string

Es la cadena Unicode del emoji o el nombre del emoji personalizado.

count

integer

Es la cantidad total de reacciones con el emoji asociado.

QuotedMessageMetadata

Representación JSON
{
  "messageId": string,
  "lastUpdateTime": string,
  "quoteType": enum (QuoteType),
  "plaintextBody": string,
  "sender": string,
  "attachments": [
    {
      object (ChatAttachmentMetadata)
    }
  ],
  "forwardedMetadata": {
    object (ForwardedMetadata)
  }
}
Campos
messageId

string

Solo salida. Es el nombre del recurso del mensaje original que se cita o reenvía. Formato: spaces/{space}/messages/{message}

lastUpdateTime

string

Solo salida. Es la marca de tiempo de cuando se creó o actualizó por última vez el mensaje original antes de citarlo o reenviarlo. Formato: Marca de tiempo ISO 8601.

quoteType

enum (QuoteType)

Solo salida. Es el tipo de cotización.

plaintextBody

string

Solo salida. Instantánea del cuerpo del texto del mensaje original en el momento de citarlo o reenviarlo Se aplica el formato de Markdown para FORWARD y de texto sin formato para REPLY.

sender

string

Solo salida. Es el nombre visible del autor del mensaje original.

attachments[]

object (ChatAttachmentMetadata)

Solo salida. Son los archivos adjuntos que formaban parte del mensaje original. Se propaga solo para el tipo de cuota FORWARD.

forwardedMetadata

object (ForwardedMetadata)

Solo salida. Son los metadatos sobre la conversación de origen del mensaje reenviado. Se propaga solo para el tipo de cuota FORWARD.

ForwardedMetadata

Representación JSON
{
  "conversationId": string,
  "conversationDisplayName": string
}
Campos
conversationId

string

Solo salida. Es el nombre del recurso de la conversación de origen. Formato: spaces/{space}

conversationDisplayName

string

Solo salida. Es el nombre visible de la conversación de origen en el momento en que se reenvió el mensaje. En el caso de los espacios con nombre, este es el nombre del espacio. En el caso de los mensajes directos 1:1, este es el nombre del otro participante. En el caso de los chats en grupo sin nombre, este es un nombre generado en función de los nombres de los miembros.

UserType

Es el tipo de usuario de Google Chat.

Enums
USER_TYPE_UNSPECIFIED Sin especificar.
HUMAN Usuario humano.
APP Usuario de la app

Fuente

Es la fuente del archivo adjunto.

Enums
SOURCE_UNSPECIFIED Reservados.
DRIVE_FILE El archivo es de Google Drive.
UPLOADED_CONTENT El archivo se subirá a Chat.

QuoteType

Es el tipo de cita que indica si el mensaje es una respuesta de cita o un mensaje reenviado.

Enums
QUOTE_TYPE_UNSPECIFIED Reservados. Tipo de cita no definido.
REPLY El mensaje es una respuesta con cita a un mensaje original en la misma conversación.
FORWARD El mensaje se reenvía desde un mensaje original en una conversación diferente o desde un hilo diferente en la misma conversación.

Anotaciones de herramientas

Las anotaciones de herramientas se envían a los clientes de MCP para describir el riesgo básico de una herramienta determinada. La mayoría de los clientes tratan estas sugerencias como no confiables, pero se pueden usar para decidir cuándo se puede enviar un mensaje de confirmación a un usuario.

Junto con la cadena de título, las siguientes sugerencias booleanas se definen de la siguiente manera:

  • readOnlyHint: Si es verdadero, la herramienta no modifica su entorno. Valor predeterminado: false.
  • destructiveHint: Si es verdadero, la herramienta puede realizar acciones destructivas. Si es falso, la herramienta solo puede realizar acciones aditivas. Valor predeterminado: true.
  • idempotentHint: Si es verdadero, llamar a la herramienta de forma repetida con los mismos argumentos no tendrá ningún efecto adicional en su entorno. Valor predeterminado: false.
  • openWorldHint: Si es verdadero, la herramienta puede interactuar con un "mundo abierto" de entidades externas. Si es falso, la herramienta solo puede interactuar con entidades internas. Por ejemplo, una herramienta de búsqueda web sería de mundo abierto, mientras que una herramienta de memoria no lo sería.

Sugerencia destructiva: ❌ | Sugerencia idempotente: ❌ | Sugerencia de solo lectura: ❌ | Sugerencia de mundo abierto: ✅

Alcances de la autorización

Se necesita uno de los siguientes alcances de OAuth:

  • https://www.googleapis.com/auth/chat.messages
  • https://www.googleapis.com/auth/chat.messages.create