Herramienta: search_messages
CranberryBusca mensajes de Google Chat con palabras clave y filtros, y los devuelve en formato Markdown. Funciona en todos los espacios a los que el usuario tiene acceso o se puede limitar a una conversación específica.
Sigue esta guía cuando decidas usar search_messages en lugar de otras herramientas de búsqueda o lectura:
- Usa
search_messagescuando busques contenido de mensajes, palabras clave, menciones, vínculos, remitentes o mensajes no leídos específicos, posiblemente en varios espacios o sin un ID de conversación conocido. - Usa
list_messagescuando conozcas el ID específico del espacio o del hilo y quieras leer los mensajes de forma secuencial en orden cronológico. - Usa
search_conversationspara encontrar metadatos del espacio, como IDs de conversación por nombre visible del espacio o participantes (solo busca metadatos, no el contenido de los mensajes).
Si se proporciona searchParameters sin filtros específicos, se devuelven los mensajes recientes de las conversaciones a las que el usuario tiene acceso.
En la siguiente muestra de código, se muestra cómo usar curl para llamar a la herramienta de MCP search_messages.
| 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": "search_messages", "arguments": { // provide these details according to the tool MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
Esquema de entrada
SearchMessagesRequest
| Representación JSON |
|---|
{
"searchParameters": {
object ( |
| Campos | |
|---|---|
searchParameters |
Obligatorio. Son los parámetros de búsqueda que se usarán para la búsqueda. |
pageSize |
Opcional. Es la cantidad máxima de resultados que se devolverán (hasta 100). Si no se especifica, se devolverán, como máximo, 25. |
pageToken |
Opcional. Un token de página, recibido desde una llamada |
SearchParameters
| Representación JSON |
|---|
{ "keywords": [ string ], "conversationId": string, "sender": string, "isUnread": boolean, "hasLink": boolean, "startTime": string, "endTime": string, "mentionsMe": boolean, "conversationIncludesUser": string, "spaceDisplayNames": [ string ] } |
| Campos | |
|---|---|
keywords[] |
Opcional. Es un conjunto de palabras clave que se usan para filtrar los resultados. |
conversationId |
Opcional. Limita la búsqueda a un identificador de conversación específico, como se muestra en la herramienta search_conversations. Formato: |
sender |
Opcional. Filtrar mensajes de un usuario específico Se puede usar el correo electrónico o el nombre del recurso del remitente. Los nombres de recursos de usuarios tienen el formato |
isUnread |
Opcional. Filtra los mensajes que no leyó el usuario que llama. |
hasLink |
Opcional. Filtra los mensajes que contienen al menos una URL. |
startTime |
Opcional. Filtra los mensajes creados después de esta fecha y hora. Formato: Marca de tiempo ISO 8601. |
endTime |
Opcional. Filtra los mensajes creados antes de esta fecha y hora. Formato: Marca de tiempo ISO 8601. |
mentionsMe |
Opcional. Filtra los mensajes que mencionan explícitamente al usuario que llama. |
conversationIncludesUser |
Opcional. Filtrar los mensajes en MD y chats grupales que incluyen el ID o el correo electrónico del usuario específico |
spaceDisplayNames[] |
Opcional. Filtra por una lista de nombres de espacios. Los nombres para mostrar de los espacios se comparan parcialmente. Nota: Solo se devuelven las 5 coincidencias principales. |
Esquema de salida
Es la respuesta a la búsqueda de mensajes de Google Chat. Si se propaga next_page_token, se puede volver a llamar a SearchMessages con ese token para recuperar la siguiente página de resultados.
SearchMessagesResponse
| Representación JSON |
|---|
{
"messages": [
{
object ( |
| Campos | |
|---|---|
messages[] |
Es una lista de objetos de mensajes que coinciden con los criterios de búsqueda. |
nextPageToken |
Un token que se puede enviar como |
ChatMessage
| Representación JSON |
|---|
{ "messageId": string, "threadId": string, "plaintextBody": string, "sender": { object ( |
| Campos | |
|---|---|
messageId |
Es el nombre del recurso del mensaje. Formato: spaces/{space}/messages/{message} |
threadId |
Es la conversación a la que pertenece este mensaje. Este campo estará vacío si el mensaje no está en un subproceso. Formato: spaces/{space}/threads/{thread} |
plaintextBody |
Es el cuerpo del mensaje en formato Markdown. |
sender |
Es el remitente del mensaje. |
createTime |
Solo salida. Es la marca de tiempo de cuando se creó el mensaje. |
threadedReply |
Indica si el mensaje es una respuesta en una conversación. |
attachments[] |
Son los archivos adjuntos incluidos en el mensaje. |
reactionSummaries[] |
Es el resumen de las reacciones con emojis que se incluye en el mensaje. |
Usuario
| Representación JSON |
|---|
{
"userId": string,
"displayName": string,
"email": string,
"userType": enum ( |
| Campos | |
|---|---|
userId |
Es el nombre del recurso de un usuario de Chat. El formato es users/{user}. |
displayName |
Es el nombre visible de un usuario de Chat. |
email |
Es la dirección de correo electrónico del usuario. Este campo solo se completa cuando el tipo de usuario es HUMAN. |
userType |
Es el tipo de usuario. |
ChatAttachmentMetadata
| Representación JSON |
|---|
{
"attachmentId": string,
"filename": string,
"mimeType": string,
"source": enum ( |
| Campos | |
|---|---|
attachmentId |
Es el nombre del recurso del archivo adjunto. El formato es spaces/{space}/messages/{message}/attachments/{attachment}. |
filename |
Nombre del archivo adjunto. |
mimeType |
Tipo de contenido (tipo de MIME). |
source |
Es la fuente del adjunto. |
ReactionSummary
| Representación JSON |
|---|
{ "emoji": string, "count": integer } |
| Campos | |
|---|---|
emoji |
Es la cadena Unicode del emoji o el nombre del emoji personalizado. |
count |
Es la cantidad total de reacciones con el emoji asociado. |
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 adjunto.
| Enums | |
|---|---|
SOURCE_UNSPECIFIED |
Reservado. |
DRIVE_FILE |
El archivo es un archivo de Google Drive. |
UPLOADED_CONTENT |
El archivo se subirá a Chat. |
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 le puede enviar un mensaje de confirmación a un usuario.
Junto con la cadena de título, se definen las siguientes sugerencias booleanas:
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.readonlyhttps://www.googleapis.com/auth/chat.spaces.readonlyhttps://www.googleapis.com/auth/chat.memberships.readonlyhttps://www.googleapis.com/auth/chat.users.readstate.readonly