MCP Tools Reference: chatmcp.googleapis.com

Alat: send_message

Mengirim pesan Google Chat ke percakapan dengan pemformatan Markdown.

Alat ini menggunakan ID percakapan, ID rangkaian pesan opsional, dan teks pesan sebagai input.

ID percakapan dapat ditemukan menggunakan alat search_conversations.

Fungsi ini menampilkan pesan yang dibuat.

Contoh kode berikut menunjukkan cara menggunakan curl untuk memanggil alat MCP send_message.

Permintaan 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
}'

Skema Input

SendMessageRequest

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

string

Wajib. ID percakapan (misalnya, 'spaces/AAAA...') yang akan dikirimi pesan.

threadId

string

Opsional. ID rangkaian pesan (misalnya, 'spaces/AAAA.../threads/BBBB...') untuk mengirim pesan. Jika tidak ditetapkan, pesan akan dikirim ke rangkaian pesan baru.

messageText

string

Wajib. Konten utama pesan. Pemformatan dapat ditambahkan menggunakan Markdown standar (perhatikan bahwa tabel TIDAK didukung). Pemformatan berikut didukung:

  • Tebal: **text**
  • Miring: *text* atau _text_
  • Coret: ~~text~~
  • Monospace: text
  • Blok monospace:
```
line 1
line 2
```
  • Daftar berbutir:
* item 1
* item 2
  • Daftar yang diurutkan:
1. item 1
2. item 2
  • Kutipan blok: > quoted text
  • Hyperlink: [label](url)
  • Menyebutkan pengguna: Gunakan tag HTML yang menutup sendiri chat-user dengan atribut data-email="user@example.com" atau data-user="users/USER_ID". Pilih atribut data-user dengan USER_ID jika diketahui dan gunakan atribut data-email dengan email pengguna jika tidak diketahui. Jika Anda menggunakan atribut data-user, pastikan untuk menyertakan awalan users/ yang terlihat di nilai yang ditampilkan alat lain. Catatan: Maksimum 10 sebutan diizinkan per pesan. Menyebutkan semua pengguna (misalnya, menggunakan @all atau tag HTML dengan users/all) dilarang keras.
  • Emoji kustom: Gunakan tag HTML yang menutup sendiri chat-emoji dengan atribut data-custom-emoji="customEmojis/abc" atau data-emoji-name=":xyz:".
  • Kutipan: Gabungkan teks yang dikutip dalam tag HTML chat-citation dengan atribut data-id yang cocok dengan ID kutipan. Jika tag chat-citation memiliki data-id yang tidak cocok dengan Citation.id apa pun, tag tersebut akan diabaikan dan teks yang digabungkan akan dirender sebagai teks biasa. Catatan: Maksimum 20 kutipan inline diizinkan per pesan.
cards[]

object (Struct format)

Opsional. Kartu yang dilampirkan ke pesan. Ukuran maksimum adalah 32 KB per kartu. Setiap kartu direpresentasikan sebagai struct JSON yang mengikuti format Kartu Google Chat (Kartu UIKit Google Workspace/Kartu v2). Untuk melampirkan kartu ke pesan, aplikasi Chat harus menjadi anggota ruang.

Identifikasi kartu:

  • Kolom string name tingkat teratas di setiap kartu berfungsi sebagai ID-nya.
  • Jika beberapa kartu dilampirkan ke pesan, setiap kartu HARUS menentukan name yang unik dan tidak kosong.
inlineCitations[]

object (Citation)

Opsional. Kutipan dalam respons yang dirujuk dalam message_text melalui tag chat-citation. Maksimum 20 kutipan inline diizinkan per pesan. Kutipan inline yang tidak direferensikan (yang tidak memiliki tag chat-citation yang cocok di message_text) akan diabaikan dan tidak menyebabkan error validasi.

footerCitedSources[]

object (CitedSource)

Opsional. Sumber kutipan tingkat atas ditampilkan sebagai kartu referensi di bagian bawah (footer) pesan. Maksimum 50 sumber kutipan diizinkan secara total di semua kutipan inline dan sumber footer dalam sebuah pesan.

Struct

Representasi JSON
{
  "fields": {
    string: value,
    ...
  }
}
Kolom
fields

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

Peta nilai yang diketik secara dinamis dan tidak berurutan.

Objek yang berisi daftar pasangan "key": value. Contoh: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

FieldsEntry

Representasi JSON
{
  "key": string,
  "value": value
}
Kolom
key

string

value

value (Value format)

Nilai

Representasi JSON
{

  "nullValue": null,
  "numberValue": number,
  "stringValue": string,
  "boolValue": boolean,
  "structValue": {
    object
  },
  "listValue": array
}
Kolom
Kolom union kind. Jenis nilai. kind hanya dapat berupa salah satu dari berikut:
nullValue

null

Merepresentasikan null JSON.

numberValue

number

Mewakili angka JSON. Tidak boleh NaN, Infinity, atau -Infinity, karena tidak didukung di JSON. Hal ini juga tidak dapat merepresentasikan nilai Int64 yang besar, karena format JSON umumnya tidak mendukungnya dalam jenis angkanya.

stringValue

string

Mewakili string JSON.

boolValue

boolean

Merepresentasikan boolean JSON (literal true atau false dalam JSON).

structValue

object (Struct format)

Mewakili objek JSON.

listValue

array (ListValue format)

Mewakili array JSON.

ListValue

Representasi JSON
{
  "values": [
    value
  ]
}
Kolom
values[]

value (Value format)

Kolom berulang dari nilai yang diketik secara dinamis.

Pengutipan

Representasi JSON
{
  "id": string,
  "citedSources": [
    {
      object (CitedSource)
    }
  ]
}
Kolom
id

string

Wajib. ID unik yang cocok dengan atribut data-id di tag chat-citation (misalnya, menggabungkan teks yang dikutip dengan chat-citation dan atribut data-id="ID") di message_text. Hanya boleh terdiri dari huruf ASCII, angka, garis bawah, atau tanda hubung (1-63 karakter). Harus unik di antara semua kutipan dalam pesan.

citedSources[]

object (CitedSource)

Wajib. Satu atau beberapa sumber yang dilampirkan ke kartu informasi kutipan ini. Maksimum 50 sumber kutipan diizinkan secara total di semua kutipan inline dan sumber footer dalam sebuah pesan.

CitedSource

Representasi JSON
{
  "title": string,
  "url": string,
  "snippet": string,
  "imageUrl": string,
  "footer": string
}
Kolom
title

string

Wajib. Judul teks biasa dari sumber (misalnya, "Program Pratinjau Developer Google Workspace"). Pemformatan Markdown tidak didukung dalam judul.

url

string

Wajib. URL referensi yang dikutip (harus berupa URL http:// atau https:// yang valid, misalnya, "https://developers.google.com/workspace/preview").

snippet

string

Opsional. Kutipan atau cuplikan singkat langsung dari sumbernya. Ditampilkan di kartu informasi atau footer. Hanya teks biasa. Panjang maksimum adalah 1.000 karakter.

imageUrl

string

Opsional. URL thumbnail pratinjau gambar (harus menggunakan URL https://).

footer

string

Opsional. Teks atribusi tambahan yang ditampilkan di footer kartu (misalnya, nama domain "developers.google.com" atau nama penulis/organisasi).

NullValue

Merepresentasikan null JSON.

NullValue adalah sentinel, yang menggunakan enum dengan hanya satu nilai untuk merepresentasikan nilai null untuk gabungan jenis Value.

Kolom jenis NullValue dengan nilai selain 0 dianggap tidak valid. Sebagian besar serializer ProtoJSON akan memunculkan Value dengan null_value yang ditetapkan sebagai null JSON, terlepas dari nilai bilangan bulatnya, sehingga akan melakukan perjalanan pulang pergi ke nilai 0.

Enum
NULL_VALUE Nilai null.

Skema Output

Respons terhadap pengiriman pesan ke percakapan Google Chat.

SendMessageResponse

Representasi JSON
{
  "message": {
    object (ChatMessage)
  }
}
Kolom
message

object (ChatMessage)

Pesan yang dikirim.

ChatMessage

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

string

Nama resource pesan. Format: spaces/{space}/messages/{message}

threadId

string

Rangkaian pesan yang menyertakan pesan ini. Kolom ini akan kosong jika pesan tidak diurutkan dalam rangkaian pesan. Format: spaces/{space}/threads/{thread}

plaintextBody

string

Isi teks pesan menggunakan pemformatan Markdown.

sender

object (User)

Pengirim pesan.

createTime

string

Hanya output. Stempel waktu saat pesan dibuat. Format: Stempel waktu ISO 8601.

threadedReply

boolean

Apakah pesan merupakan balasan rangkaian pesan.

attachments[]

object (ChatAttachmentMetadata)

Lampiran yang disertakan dalam pesan.

reactionSummaries[]

object (ReactionSummary)

Ringkasan reaksi emoji yang disertakan dalam pesan.

quotedMessageMetadata

object (QuotedMessageMetadata)

Hanya output. Informasi tentang pesan asli yang dikutip atau diteruskan dalam pesan ini. Catatan: Kolom ini sedang dalam pengembangan dan mungkin belum ada di semua lingkungan.

Pengguna

Representasi JSON
{
  "userId": string,
  "displayName": string,
  "email": string,
  "userType": enum (UserType)
}
Kolom
userId

string

Nama resource pengguna Chat. Format: users/{user}.

displayName

string

Nama tampilan pengguna Chat.

email

string

Alamat email pengguna. Kolom ini hanya diisi jika jenis pengguna adalah HUMAN.

userType

enum (UserType)

Jenis pengguna.

ChatAttachmentMetadata

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

string

Nama resource lampiran. Format: spaces/{space}/messages/{message}/attachments/{attachment}.

filename

string

Nama lampiran.

mimeType

string

Jenis konten (jenis MIME).

source

enum (Source)

Sumber lampiran.

driveFileId

string

Hanya output. ID untuk file Google Drive. Hanya diisi jika sumbernya adalah DRIVE_FILE. Gunakan dengan MCP Google Drive.

ReactionSummary

Representasi JSON
{
  "emoji": string,
  "count": integer
}
Kolom
emoji

string

String unicode emoji atau nama emoji kustom.

count

integer

Jumlah total reaksi yang menggunakan emoji terkait.

QuotedMessageMetadata

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

string

Hanya output. Nama resource pesan asli yang dikutip atau diteruskan. Format: spaces/{space}/messages/{message}

lastUpdateTime

string

Hanya output. Stempel waktu saat pesan asli dibuat atau terakhir diperbarui sebelum dikutip atau diteruskan. Format: Stempel waktu ISO 8601.

quoteType

enum (QuoteType)

Hanya output. Jenis kutipan.

plaintextBody

string

Hanya output. Snapshot isi teks pesan asli pada saat mengutip atau meneruskan. Diformat menggunakan Markdown untuk FORWARD, dan teks biasa untuk REPLY.

sender

string

Hanya output. Nama tampilan penulis pesan asli.

attachments[]

object (ChatAttachmentMetadata)

Hanya output. Lampiran yang merupakan bagian dari pesan asli. Diisi hanya untuk jenis penawaran harga FORWARD.

forwardedMetadata

object (ForwardedMetadata)

Hanya output. Metadata tentang percakapan sumber pesan yang diteruskan. Hanya diisi untuk jenis penawaran harga FORWARD.

ForwardedMetadata

Representasi JSON
{
  "conversationId": string,
  "conversationDisplayName": string
}
Kolom
conversationId

string

Hanya output. Nama resource percakapan sumber. Format: spaces/{space}

conversationDisplayName

string

Hanya output. Nama tampilan percakapan sumber pada saat pesan diteruskan. Untuk ruang bernama, ini adalah nama ruang. Untuk pesan langsung personal, ini adalah nama peserta lain. Untuk chat grup tanpa nama, nama ini dibuat berdasarkan nama anggota.

UserType

Jenis pengguna Google Chat.

Enum
USER_TYPE_UNSPECIFIED Tidak ditentukan.
HUMAN Pengguna manusia.
APP Pengguna aplikasi.

Sumber

Sumber lampiran.

Enum
SOURCE_UNSPECIFIED Dilindungi Undang-Undang.
DRIVE_FILE File tersebut adalah file Google Drive.
UPLOADED_CONTENT File diupload ke Chat.

QuoteType

Jenis kutipan yang menunjukkan apakah pesan tersebut adalah balasan kutipan atau pesan yang diteruskan.

Enum
QUOTE_TYPE_UNSPECIFIED Dilindungi Undang-Undang. Jenis kutipan tidak ditentukan.
REPLY Pesan tersebut adalah balasan kutipan untuk pesan asli dalam rangkaian pesan yang sama.
FORWARD Pesan diteruskan dari pesan asli dalam percakapan yang berbeda, atau dari rangkaian pesan yang berbeda dalam percakapan yang sama.

Anotasi Alat

Anotasi alat dikirim ke klien MCP untuk menjelaskan risiko dasar alat tertentu. Sebagian besar klien memperlakukan petunjuk ini sebagai tidak tepercaya, tetapi petunjuk tersebut dapat digunakan untuk memutuskan kapan perintah konfirmasi dapat dikirim kepada pengguna.

Bersama dengan string judul, petunjuk boolean berikut ditentukan sebagai berikut:

  • readOnlyHint: Jika benar, alat tidak akan mengubah lingkungannya. Default: false.
  • destructiveHint: Jika benar, alat dapat melakukan tindakan destruktif. Jika salah (false), alat hanya dapat melakukan tindakan aditif. Default: true.
  • idempotentHint: Jika benar, memanggil alat berulang kali dengan argumen yang sama tidak akan memberikan efek tambahan pada lingkungannya. Default: false.
  • openWorldHint: Jika benar, alat dapat berinteraksi dengan 'open world' entitas eksternal. Jika salah, alat hanya dapat berinteraksi dengan entity internal. Misalnya, alat penelusuran web akan bersifat open world, sedangkan alat memori tidak akan bersifat open world.

Destructive Hint: ❌ | Idempotent Hint: ❌ | Read Only Hint: ❌ | Open World Hint: ✅

Cakupan Otorisasi

Memerlukan salah satu cakupan OAuth berikut:

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