MCP Tools Reference: chatmcp.googleapis.com

Narzędzie: send_message

Wysyła wiadomość na czacie w Google Chat do rozmowy z formatowaniem Markdown.

To narzędzie używa identyfikatora rozmowy, opcjonalnego identyfikatora wątku i tekstu wiadomości jako danych wejściowych.

Identyfikatory rozmów można znaleźć za pomocą narzędzia search_conversations.

Zwraca utworzoną wiadomość.

Poniższy przykładowy kod pokazuje, jak używać curl do wywoływania narzędzia MCP send_message.

Żądanie 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
}'

Schemat wejściowy

SendMessageRequest

Zapis JSON
{
  "conversationId": string,
  "threadId": string,
  "messageText": string,
  "cards": [
    {
      object
    }
  ],
  "inlineCitations": [
    {
      object (Citation)
    }
  ],
  "footerCitedSources": [
    {
      object (CitedSource)
    }
  ]
}
Pola
conversationId

string

Wymagane. Identyfikator rozmowy (np. „spaces/AAAA...”), do której ma zostać wysłana wiadomość.

threadId

string

Opcjonalnie: Identyfikator wątku (np. „spaces/AAAA.../threads/BBBB...”), do którego ma zostać wysłana wiadomość. Jeśli nie zostanie ustawiony, wiadomość zostanie wysłana do nowego wątku.

messageText

string

Wymagane. Główna treść wiadomości. Formatowanie można dodać za pomocą standardowego języka Markdown (pamiętaj, że tabele NIE są obsługiwane). Obsługiwane jest to formatowanie:

  • Pogrubienie: **text**
  • Kursywa: *text* lub _text_
  • Przekreślenie: ~~text~~
  • Stała szerokość znaków: text
  • Blok o stałej szerokości znaków:
```
line 1
line 2
```
  • Lista punktowana:
* item 1
* item 2
  • Lista uporządkowana:
1. item 1
2. item 2
  • Cytat blokowy: > quoted text
  • Hiperlink: [label](url)
  • Wzmianka o użytkowniku: użyj samozamykającego się tagu HTML chat-user z atrybutami data-email="user@example.com" lub data-user="users/USER_ID". Jeśli jest znany, preferuj atrybut data-user z wartością USER_ID. W przeciwnym razie użyj atrybutu data-email z adresem e-mail użytkownika. Jeśli używasz atrybutu data-user, pamiętaj, aby uwzględnić prefiks users/ widoczny w wartościach zwracanych przez inne narzędzia. Uwaga: w jednej wiadomości można dodać maksymalnie 10 wzmianek. Wspominanie o wszystkich użytkownikach (np. za pomocą @all lub tagu HTML z users/all) jest surowo zabronione.
  • Niestandardowe emotikony: użyj samozamykającego się tagu HTML chat-emoji z atrybutami data-custom-emoji="customEmojis/abc" lub data-emoji-name=":xyz:".
  • Cytat: umieść cytowany tekst w tagu HTML chat-citation z atrybutem data-id odpowiadającym identyfikatorowi cytatu. Jeśli tag chat-citation ma wartość data-id, która nie pasuje do żadnego elementu Citation.id, tag jest ignorowany, a tekst jest renderowany jako zwykły tekst. Uwaga: w jednej wiadomości można umieścić maksymalnie 20 cytatów w tekście.
cards[]

object (Struct format)

Opcjonalnie: Karty dołączone do wiadomości. Maksymalny rozmiar to 32 KB na kartę. Każda karta jest reprezentowana jako struktura JSON zgodna z formatem karty Google Chat (Google Workspace UIKit Card / Cards v2). Aby dołączyć karty do wiadomości, aplikacja Google Chat musi być członkiem pokoju. Obrazy na kartach nie są obsługiwane.

Identyfikacja karty:

  • Pole ciągu znaków name najwyższego poziomu na każdej karcie służy jako jej identyfikator.
  • Jeśli do wiadomości dołączonych jest kilka kart, każda z nich MUSI mieć unikalną, niepustą wartość name.
inlineCitations[]

object (Citation)

Opcjonalnie: Cytaty w tekście, do których odwołują się tagi chat-citation w message_text. W każdej wiadomości może być maksymalnie 20 cytatów w tekście. Cytaty w tekście, do których nie ma odwołań (te bez pasującego tagu chat-citation w message_text), są ignorowane i nie powodują błędu weryfikacji.

footerCitedSources[]

object (CitedSource)

Opcjonalnie: Najważniejsze cytowane źródła wyświetlane jako karty referencyjne u dołu (w stopce) wiadomości. W jednej wiadomości może być maksymalnie 50 cytowanych źródeł we wszystkich cytatach w tekście i źródłach w stopce.

Struct

Zapis JSON
{
  "fields": {
    string: value,
    ...
  }
}
Pola
fields

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

Nieuporządkowana mapa wartości o typie dynamicznym.

Obiekt zawierający listę par "key": value. Przykład: { "name": "wrench", "mass": "1.3kg", "count": "3" }

FieldsEntry

Zapis JSON
{
  "key": string,
  "value": value
}
Pola
key

string

value

value (Value format)

Wartość

Zapis JSON
{

  "nullValue": null,
  "numberValue": number,
  "stringValue": string,
  "boolValue": boolean,
  "structValue": {
    object
  },
  "listValue": array
}
Pola
Pole zbiorcze kind. Rodzaj wartości. kind może mieć tylko jedną z tych wartości:
nullValue

null

Reprezentuje obiekt JSON null.

numberValue

number

Reprezentuje liczbę JSON. Nie może to być NaN, Infinity ani -Infinity, ponieważ te wartości nie są obsługiwane w formacie JSON. Nie może też reprezentować dużych wartości Int64, ponieważ format JSON zwykle nie obsługuje ich w swoim typie liczbowym.

stringValue

string

Reprezentuje ciąg JSON.

boolValue

boolean

Reprezentuje wartość logiczną JSON (literał true lub false w formacie JSON).

structValue

object (Struct format)

Reprezentuje obiekt JSON.

listValue

array (ListValue format)

Reprezentuje tablicę JSON.

ListValue

Zapis JSON
{
  "values": [
    value
  ]
}
Pola
values[]

value (Value format)

Pole powtarzane wartości wpisywanych dynamicznie.

Cytat

Zapis JSON
{
  "id": string,
  "citedSources": [
    {
      object (CitedSource)
    }
  ]
}
Pola
id

string

Wymagane. Unikalny identyfikator pasujący do atrybutu data-id w tagu chat-citation (np. cytowany tekst otoczony tagiem chat-citation i atrybutem data-id="ID") w message_text. Może składać się tylko z liter ASCII, cyfr, podkreśleń i łączników (1–63 znaki). Musi być unikalny wśród wszystkich cytatów w wiadomości.

citedSources[]

object (CitedSource)

Wymagane. Co najmniej 1 źródło dołączone do tej karty informacyjnej z cytatem. W jednej wiadomości może być maksymalnie 50 cytowanych źródeł we wszystkich cytatach w tekście i źródłach w stopce.

CitedSource

Zapis JSON
{
  "title": string,
  "url": string,
  "snippet": string,
  "imageUrl": string,
  "footer": string
}
Pola
title

string

Wymagane. Tytuł źródła w postaci zwykłego tekstu (np. „Program wersji przedpremierowej Google Workspace dla deweloperów”). Formatowanie Markdown nie jest obsługiwane w tytułach.

url

string

Wymagane. Adres URL cytowanego zasobu (musi być prawidłowym adresem URL http:// lub https://, np. „https://developers.google.com/workspace/preview”).

snippet

string

Opcjonalnie: krótki fragment lub wycinek bezpośrednio ze źródła; Wyświetlana na karcie informacyjnej lub w stopce. Tylko zwykły tekst. Maksymalna długość to 1000 znaków.

imageUrl

string

Opcjonalnie: URL miniatury podglądu obrazu (musi używać adresu URL https://).

footer

string

Opcjonalnie: Dodatkowy tekst informacji o pochodzeniu danych wyświetlany w stopce karty (np. nazwa domeny „developers.google.com” lub nazwa autora/organizacji).

NullValue

Reprezentuje obiekt JSON null.

NullValue to wartownik, który używa typu wyliczeniowego z tylko jedną wartością do reprezentowania wartości null dla unii typu Value.

Pole typu NullValue z dowolną wartością inną niż 0 jest uznawane za nieprawidłowe. Większość serializatorów ProtoJSON będzie emitować Value z null_value ustawionym jako JSON null niezależnie od wartości liczby całkowitej, więc będzie to wartość 0 w obie strony.

Wartości w polu enum
NULL_VALUE Wartość null.

Schemat wyjściowy

Odpowiedź na wysłanie wiadomości do rozmowy w Google Chat.

SendMessageResponse

Zapis JSON
{
  "message": {
    object (ChatMessage)
  }
}
Pola
message

object (ChatMessage)

Wiadomość, która została wysłana.

ChatMessage

Zapis JSON
{
  "messageId": string,
  "threadId": string,
  "plaintextBody": string,
  "sender": {
    object (User)
  },
  "createTime": string,
  "threadedReply": boolean,
  "attachments": [
    {
      object (ChatAttachmentMetadata)
    }
  ],
  "reactionSummaries": [
    {
      object (ReactionSummary)
    }
  ],
  "quotedMessageMetadata": {
    object (QuotedMessageMetadata)
  }
}
Pola
messageId

string

Nazwa zasobu wiadomości. Format: spaces/{space}/messages/{message}

threadId

string

Wątek, do którego należy ta wiadomość. Jeśli wiadomość nie jest częścią wątku, to pole będzie puste. Format: spaces/{space}/threads/{thread}

plaintextBody

string

Treść wiadomości w formacie Markdown.

sender

object (User)

Nadawca wiadomości.

createTime

string

Tylko dane wyjściowe. Sygnatura czasowa utworzenia wiadomości. Format: sygnatura czasowa ISO 8601.

threadedReply

boolean

Czy wiadomość jest odpowiedzią w wątku.

attachments[]

object (ChatAttachmentMetadata)

załączniki dołączone do wiadomości;

reactionSummaries[]

object (ReactionSummary)

Podsumowanie reakcji emotikonami zawarte w wiadomości.

quotedMessageMetadata

object (QuotedMessageMetadata)

Tylko dane wyjściowe. Informacje o oryginalnej wiadomości, która jest cytowana lub przekazywana w tej wiadomości. Uwaga: to pole jest w trakcie opracowywania i może nie być jeszcze dostępne we wszystkich środowiskach.

Użytkownik

Zapis JSON
{
  "userId": string,
  "displayName": string,
  "email": string,
  "userType": enum (UserType)
}
Pola
userId

string

Nazwa zasobu użytkownika Google Chat. Format: users/{user}.

displayName

string

Wyświetlana nazwa użytkownika Google Chat.

email

string

Adres e-mail użytkownika. To pole jest wypełniane tylko wtedy, gdy typ użytkownika to HUMAN.

userType

enum (UserType)

Typ użytkownika.

ChatAttachmentMetadata

Zapis JSON
{
  "attachmentId": string,
  "filename": string,
  "mimeType": string,
  "source": enum (Source),
  "driveFileId": string
}
Pola
attachmentId

string

Nazwa zasobu załącznika. Format: spaces/{space}/messages/{message}/attachments/{attachment}.

filename

string

Nazwa załącznika.

mimeType

string

Typ treści (typ MIME).

source

enum (Source)

Źródło załącznika.

driveFileId

string

Tylko dane wyjściowe. Identyfikator pliku na Dysku Google. Wypełniane tylko wtedy, gdy źródłem jest DRIVE_FILE. Używaj z MCP Dysku Google.

ReactionSummary

Zapis JSON
{
  "emoji": string,
  "count": integer
}
Pola
emoji

string

Ciąg znaków unicode emotikona lub nazwa niestandardowego emotikona.

count

integer

Łączna liczba reakcji z użyciem powiązanego emotikona.

QuotedMessageMetadata

Zapis JSON
{
  "messageId": string,
  "lastUpdateTime": string,
  "quoteType": enum (QuoteType),
  "plaintextBody": string,
  "sender": string,
  "attachments": [
    {
      object (ChatAttachmentMetadata)
    }
  ],
  "forwardedMetadata": {
    object (ForwardedMetadata)
  }
}
Pola
messageId

string

Tylko dane wyjściowe. Nazwa zasobu oryginalnej wiadomości, która jest cytowana lub przekazywana dalej. Format: spaces/{space}/messages/{message}

lastUpdateTime

string

Tylko dane wyjściowe. Sygnatura czasowa określająca, kiedy oryginalna wiadomość została utworzona lub ostatnio zaktualizowana przed jej zacytowaniem lub przekazaniem dalej. Format: sygnatura czasowa ISO 8601.

quoteType

enum (QuoteType)

Tylko dane wyjściowe. Typ cytatu.

plaintextBody

string

Tylko dane wyjściowe. Zrzut treści oryginalnej wiadomości w momencie cytowania lub przekazywania dalej. Sformatowane za pomocą Markdown w przypadku FORWARD i zwykłego tekstu w przypadku REPLY.

sender

string

Tylko dane wyjściowe. Wyświetlana nazwa autora oryginalnej wiadomości.

attachments[]

object (ChatAttachmentMetadata)

Tylko dane wyjściowe. załączniki, które były częścią oryginalnej wiadomości; Wartość podawana tylko w przypadku typu wyceny FORWARD.

forwardedMetadata

object (ForwardedMetadata)

Tylko dane wyjściowe. Metadane dotyczące rozmowy źródłowej przekazanej wiadomości. Wartość podawana tylko w przypadku typu wyceny FORWARD.

ForwardedMetadata

Zapis JSON
{
  "conversationId": string,
  "conversationDisplayName": string
}
Pola
conversationId

string

Tylko dane wyjściowe. Nazwa zasobu rozmowy źródłowej. Format: spaces/{space}

conversationDisplayName

string

Tylko dane wyjściowe. Wyświetlana nazwa rozmowy źródłowej w momencie przekazania wiadomości. W przypadku nazwanych pokoi jest to nazwa pokoju. W przypadku czatów indywidualnych jest to nazwa drugiego uczestnika. W przypadku czatów grupowych bez nazwy jest to nazwa wygenerowana na podstawie nazw użytkowników.

UserType

Typ użytkownika Google Chat.

Wartości w polu enum
USER_TYPE_UNSPECIFIED Nie określono.
HUMAN Użytkownik.
APP Użytkownik aplikacji.

Źródło

Źródło załącznika.

Wartości w polu enum
SOURCE_UNSPECIFIED Zarezerwowane.
DRIVE_FILE Plik jest plikiem na Dysku Google.
UPLOADED_CONTENT Plik zostanie przesłany do Google Chat.

QuoteType

Typ cytatu wskazujący, czy wiadomość jest odpowiedzią z cytatem czy przekazaną wiadomością.

Wartości w polu enum
QUOTE_TYPE_UNSPECIFIED Zarezerwowane. Niezdefiniowany typ cytatu.
REPLY Wiadomość jest odpowiedzią z cytatem na oryginalną wiadomość w tym samym wątku.
FORWARD Wiadomość została przekazana z oryginalnej wiadomości w innej rozmowie lub z innego wątku w tej samej rozmowie.

Adnotacje dotyczące narzędzi

Adnotacje narzędzi są wysyłane do klientów MCP, aby opisać podstawowe ryzyko związane z danym narzędziem. Większość klientów traktuje te wskazówki jako niezaufane, ale można ich użyć do określenia, kiedy wysłać użytkownikowi prośbę o potwierdzenie.

Oprócz ciągu tytułu zdefiniowane są te wskazówki logiczne:

  • readOnlyHint: jeśli ma wartość „true”, narzędzie nie modyfikuje swojego środowiska. Wartość domyślna: false.
  • destructiveHint: jeśli ma wartość „true”, narzędzie może wykonywać działania destrukcyjne. Jeśli ma wartość false, narzędzie może wykonywać tylko działania dodawania. Wartość domyślna: true.
  • idempotentHint: jeśli ma wartość „true”, wielokrotne wywoływanie narzędzia z tymi samymi argumentami nie będzie miało dodatkowego wpływu na jego środowisko. Wartość domyślna: false.
  • openWorldHint: jeśli ma wartość true, narzędzie może wchodzić w interakcje z „otwartym światem” podmiotów zewnętrznych. Jeśli ma wartość false, narzędzie może wchodzić w interakcje tylko z elementami wewnętrznymi. Na przykład narzędzie do wyszukiwania w internecie jest narzędziem typu Otwarty świat, a narzędzie do zapamiętywania – nie.

Wskazówka dotycząca destrukcyjności: ❌ | Wskazówka dotycząca idempotencji: ❌ | Wskazówka dotycząca tylko do odczytu: ❌ | Wskazówka dotycząca otwartego świata: ✅

Zakresy autoryzacji

Wymaga jednego z tych zakresów OAuth:

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