MCP Tools Reference: chatmcp.googleapis.com

টুল: send_message

মার্কডাউন ফর্ম্যাটিং সহ কথোপকথনে Google Chat মেসেজ পাঠায়।

এই টুল ইনপুট হিসেবে কথোপকথন আইডি, ঐচ্ছিক থ্রেড আইডি এবং মেসেজ টেক্সট ব্যবহার করে।

search_conversations টুল ব্যবহার করে কনভারসেশন আইডি খুঁজে পাওয়া যাবে।

এটি তৈরি করা মেসেজ ফিরিয়ে দেয়।

send_message MCP টুল কল করার জন্য কীভাবে curl ব্যবহার করতে হয় তা নিম্নলিখিত কোড স্যাম্পেল থেকে জানতে পারবেন।

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

ইনপুট স্কিমা

SendMessageRequest

JSON উপস্থাপনা
{
  "conversationId": string,
  "threadId": string,
  "messageText": string,
  "cards": [
    {
      object
    }
  ],
  "inlineCitations": [
    {
      object (Citation)
    }
  ],
  "footerCitedSources": [
    {
      object (CitedSource)
    }
  ]
}
ফিল্ড
conversationId

string

প্রয়োজনীয়। মেসেজ পাঠানোর জন্য কথোপকথনের আইডি (যেমন, 'spaces/AAAA...')।

threadId

string

ঐচ্ছিক। মেসেজ পাঠানোর জন্য থ্রেডের আইডি (যেমন, 'spaces/AAAA.../threads/BBBB...')। সেট করা না থাকলে, মেসেজটি নতুন থ্রেডে পাঠানো হবে।

messageText

string

প্রয়োজনীয়। মেসেজের মূল কন্টেন্ট। স্ট্যান্ডার্ড মার্কডাউন ব্যবহার করে ফর্ম্যাটিং যোগ করা যেতে পারে (মনে রাখবেন যে টেবিল কাজ করে না)। নিম্নলিখিত ফর্ম্যাটিং কাজ করে:

  • বোল্ড: **text**
  • ইটালিক: *text* বা _text_
  • স্ট্রাইকথ্রু: ~~text~~
  • Monospace: text
  • মোনোস্পেস ব্লক:
```
line 1
line 2
```
  • বুলেটযুক্ত তালিকা:
* item 1
* item 2
  • ক্রমানুসারে সাজানো তালিকা:
1. item 1
2. item 2
  • ব্লক কোটেশন: > quoted text
  • হাইপারলিঙ্ক: [label](url)
  • ব্যবহারকারীকে উল্লেখ করুন: data-email="user@example.com" বা data-user="users/USER_ID" অ্যাট্রিবিউট সহ সেল্ফ-ক্লোজিং HTML ট্যাগ chat-user ব্যবহার করুন। জানা থাকলে USER_ID সহ data-user অ্যাট্রিবিউট ব্যবহার করুন, অন্যথায় ব্যবহারকারীর ইমেল সহ data-email অ্যাট্রিবিউট ব্যবহার করুন। আপনি data-user অ্যাট্রিবিউট ব্যবহার করলে, অন্যান্য টুল রিটার্ন ভ্যালুতে দেখা users/ প্রিফিক্স অন্তর্ভুক্ত করতে ভুলবেন না। মনে রাখবেন: প্রতিটি মেসেজে সর্বাধিক ১০টি উল্লেখ করার অনুমতি আছে। সব ব্যবহারকারীকে উল্লেখ করা (যেমন, @all বা users/all সহ HTML ট্যাগ ব্যবহার করা) কঠোরভাবে নিষিদ্ধ।
  • কাস্টম ইমোজি: data-custom-emoji="customEmojis/abc" বা data-emoji-name=":xyz:" অ্যাট্রিবিউট সহ সেল্ফ-ক্লোজিং HTML ট্যাগ chat-emoji ব্যবহার করুন।
  • উদ্ধৃতি: উদ্ধৃত টেক্সটকে HTML ট্যাগ chat-citation-এ র‍্যাপ করুন, যেখানে data-id অ্যাট্রিবিউট উদ্ধৃতি আইডির সাথে ম্যাচ করবে। কোনও chat-citation ট্যাগে যদি এমন data-id থাকে যা কোনও Citation.id-এর সাথে মেলে না, তাহলে ট্যাগটি উপেক্ষা করা হয় এবং র‍্যাপ করা টেক্সট প্লেন টেক্সট হিসেবে দেখানো হয়। মনে রাখবেন: প্রতিটি মেসেজে সর্বাধিক ২০টি ইনলাইন উদ্ধৃতি যোগ করা যাবে।
cards[]

object (Struct format)

ঐচ্ছিক। মেসেজের সাথে কার্ড অ্যাটাচ করা হয়েছে। কার্ড পিছু সর্বাধিক সাইজ হল ৩২ কেবি। প্রতিটি কার্ড Google Chat কার্ড ফর্ম্যাট (Google Workspace UIKit Card / Cards v2) অনুসরণ করে JSON স্ট্রাক্ট হিসেবে দেখানো হয়। মেসেজে কার্ড অ্যাটাচ করতে, Chat অ্যাপকে অবশ্যই স্পেসের মেম্বার হতে হবে। কার্ডে ছবি ব্যবহার করা যাবে না।

কার্ড শনাক্তকরণ:

  • প্রতিটি কার্ডে টপ-লেভেল name স্ট্রিং ফিল্ড সেটির শনাক্তকারী হিসেবে কাজ করে।
  • কোনও মেসেজে একাধিক কার্ড অ্যাটাচ করা থাকলে, প্রতিটি কার্ডে অবশ্যই একটি অনন্য, খালি নয় এমন name উল্লেখ করতে হবে।
inlineCitations[]

object (Citation)

ঐচ্ছিক। chat-citation ট্যাগের মাধ্যমে message_text-এর মধ্যে ইনলাইন সাইটেশন রেফারেন্স করা হয়েছে। প্রতিটি মেসেজে সর্বাধিক ২০টি ইনলাইন উদ্ধৃতি ব্যবহার করা যাবে। রেফারেন্স না থাকা ইনলাইন উদ্ধৃতি (যেগুলির message_text-এ কোনও ম্যাচিং chat-citation ট্যাগ নেই) উপেক্ষা করা হয় এবং এর ফলে কোনও যাচাইকরণ সংক্রান্ত সমস্যা হয় না।

footerCitedSources[]

object (CitedSource)

ঐচ্ছিক। মেসেজের নিচে (ফুটার) রেফারেন্স কার্ড হিসেবে টপ-লেভেল উদ্ধৃত সোর্স দেখানো হয়। একটি মেসেজে সব ইনলাইন উদ্ধৃতি এবং ফুটার সোর্স মিলিয়ে সর্বাধিক ৫০টি উদ্ধৃত সোর্স ব্যবহার করা যাবে।

স্ট্রাক্ট

JSON উপস্থাপনা
{
  "fields": {
    string: value,
    ...
  }
}
ফিল্ড
fields

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

ডায়নামিকালি টাইপ করা ভ্যালুর ক্রমহীন ম্যাপ।

"key": valueটি পেয়ারের তালিকা সহ অবজেক্ট। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }।

FieldsEntry

JSON উপস্থাপনা
{
  "key": string,
  "value": value
}
ফিল্ড
key

string

value

value (Value format)

ভ্যালু

JSON উপস্থাপনা
{

  "nullValue": null,
  "numberValue": number,
  "stringValue": string,
  "boolValue": boolean,
  "structValue": {
    object
  },
  "listValue": array
}
ফিল্ড
ইউনিয়ন ফিল্ড kind। ভ্যালুর ধরন। kind শুধুমাত্র নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
nullValue

null

JSON null দেখায়।

numberValue

number

JSON নম্বর দেখায়। NaN, Infinity বা -Infinity হলে চলবে না, কারণ JSON-এ এগুলি কাজ করে না। এছাড়াও, এটি বড় Int64 ভ্যালু দেখাতে পারে না, কারণ JSON ফর্ম্যাট সাধারণত তার নম্বর টাইপে সেগুলি দেখাতে পারে না।

stringValue

string

JSON স্ট্রিং দেখায়।

boolValue

boolean

JSON বুলিয়ান (JSON-এ true বা false লিটারেল) দেখায়।

structValue

object (Struct format)

JSON অবজেক্টকে দেখায়।

listValue

array (ListValue format)

JSON অ্যারে দেখায়।

ListValue

JSON উপস্থাপনা
{
  "values": [
    value
  ]
}
ফিল্ড
values[]

value (Value format)

ডায়নামিকালি টাইপ করা ভ্যালুর রিপিট করা ফিল্ড।

সাইটেশন

JSON উপস্থাপনা
{
  "id": string,
  "citedSources": [
    {
      object (CitedSource)
    }
  ]
}
ফিল্ড
id

string

প্রয়োজনীয়। message_text-এ chat-citation ট্যাগের data-id অ্যাট্রিবিউটের সাথে মিলে যাওয়া অনন্য শনাক্তকারী (যেমন, chat-citation এবং অ্যাট্রিবিউট data-id="ID"-এর সাথে উদ্ধৃত টেক্সট র‍্যাপ করা)। এতে শুধু ASCII অক্ষর, সংখ্যা, আন্ডারস্কোর বা হাইফেন (১-৬৩টি অক্ষর) থাকতে হবে। মেসেজের সব উদ্ধৃতির মধ্যে অনন্য হতে হবে।

citedSources[]

object (CitedSource)

প্রয়োজনীয়। এই উদ্ধৃতি হোভারকার্ডে এক বা একাধিক সোর্স অ্যাটাচ করা আছে। একটি মেসেজে সব ইনলাইন উদ্ধৃতি এবং ফুটার সোর্স মিলিয়ে সর্বাধিক ৫০টি উদ্ধৃত সোর্স ব্যবহার করা যাবে।

CitedSource

JSON উপস্থাপনা
{
  "title": string,
  "url": string,
  "snippet": string,
  "imageUrl": string,
  "footer": string
}
ফিল্ড
title

string

প্রয়োজনীয়। সোর্সের প্লেইনটেক্সট শীর্ষক (যেমন, "Google Workspace ডেভেলপার প্রিভিউ প্রোগ্রাম")। শিরোনামে মার্কডাউন ফর্ম্যাটিং কাজ করে না।

url

string

প্রয়োজনীয়। উল্লেখ করা রিসোর্সের URL (অবশ্যই সঠিক http:// বা https:// URL হতে হবে, যেমন, "https://developers.google.com/workspace/preview")।

snippet

string

ঐচ্ছিক। সোর্স থেকে সরাসরি নেওয়া ছোট উদ্ধৃতি বা স্নিপেট। হোভারকার্ড বা ফুটারে দেখানো হয়। শুধুমাত্র প্লেন টেক্সট। সর্বাধিক ১,০০০টি অক্ষর লেখা যাবে।

imageUrl

string

ঐচ্ছিক। ছবির প্রিভিউ থাম্বনেলের URL (অবশ্যই https:// URL ব্যবহার করতে হবে)।

footer

string

ঐচ্ছিক। কার্ডের ফুটারে অতিরিক্ত অ্যাট্রিবিউশন টেক্সট দেখানো হয় (যেমন, ডোমেন নাম "developers.google.com" বা লেখক/সংস্থার নাম)।

NullValue

JSON null দেখায়।

NullValue হল একটি সেন্টিনেল, যা Value টাইপ ইউনিয়নের জন্য নাল ভ্যালু দেখাতে শুধুমাত্র একটি ভ্যালু সহ enum ব্যবহার করে।

0 ছাড়া অন্য কোনও ভ্যালু সহ NullValue ধরনের ফিল্ডকে ভুল হিসেবে বিবেচনা করা হয়। বেশিরভাগ ProtoJSON সিরিয়ালাইজার, পূর্ণসংখ্যার ভ্যালু যাই হোক না কেন, JSON null হিসেবে সেট করা null_value সহ Value এমিট করবে এবং তাই 0 ভ্যালুতে রাউন্ড ট্রিপ করবে।

Enums
NULL_VALUE নাল ভ্যালু।

আউটপুট স্কিমা

Google Chat কথোপকথনে মেসেজ পাঠানোর উত্তর।

SendMessageResponse

JSON উপস্থাপনা
{
  "message": {
    object (ChatMessage)
  }
}
ফিল্ড
message

object (ChatMessage)

যে মেসেজ পাঠানো হয়েছে।

ChatMessage

JSON উপস্থাপনা
{
  "messageId": string,
  "threadId": string,
  "plaintextBody": string,
  "sender": {
    object (User)
  },
  "createTime": string,
  "threadedReply": boolean,
  "attachments": [
    {
      object (ChatAttachmentMetadata)
    }
  ],
  "reactionSummaries": [
    {
      object (ReactionSummary)
    }
  ],
  "quotedMessageMetadata": {
    object (QuotedMessageMetadata)
  }
}
ফিল্ড
messageId

string

মেসেজের রিসোর্স নাম। ফর্ম্যাট: spaces/{space}/messages/{message}

threadId

string

এই মেসেজটি যে থ্রেডের অন্তর্গত। মেসেজটি থ্রেড করা না থাকলে এটি খালি থাকবে। ফর্ম্যাট: spaces/{space}/threads/{thread}

plaintextBody

string

মার্কডাউন ফর্ম্যাটিং ব্যবহার করে মেসেজের টেক্সট বডি।

sender

object (User)

মেসেজের প্রেরক।

createTime

string

শুধুমাত্র আউটপুট। মেসেজটি কখন তৈরি করা হয়েছিল সেই টাইমস্ট্যাম্প। ফর্ম্যাট: ISO 8601 টাইমস্ট্যাম্প।

threadedReply

boolean

মেসেজটি থ্রেডের উত্তর কিনা।

attachments[]

object (ChatAttachmentMetadata)

মেসেজে অ্যাটাচমেন্ট যোগ করা হয়েছে।

reactionSummaries[]

object (ReactionSummary)

মেসেজে ইমোজি প্রতিক্রিয়ার সারসংক্ষেপ অন্তর্ভুক্ত করা হয়েছে।

quotedMessageMetadata

object (QuotedMessageMetadata)

শুধুমাত্র আউটপুট। এই মেসেজে উদ্ধৃত বা ফরওয়ার্ড করা আসল মেসেজ সম্পর্কে তথ্য। মনে রাখবেন: এই ফিল্ডটি এখনও ডেভেলপ করা হচ্ছে এবং সব পরিবেশে এখনও উপলভ্য নাও হতে পারে।

ব্যবহারকারী

JSON উপস্থাপনা
{
  "userId": string,
  "displayName": string,
  "email": string,
  "userType": enum (UserType)
}
ফিল্ড
userId

string

Chat ব্যবহারকারীর রিসোর্স নাম। ফর্ম্যাট: users/{user}।

displayName

string

Chat ব্যবহারকারীর ডিসপ্লে নাম।

email

string

ব্যবহারকারীর ইমেল আইডি। ব্যবহারকারীর ধরন HUMAN হলে তবেই এই ফিল্ডে তথ্য দেখানো হয়।

userType

enum (UserType)

ব্যবহারকারীর ধরন।

ChatAttachmentMetadata

JSON উপস্থাপনা
{
  "attachmentId": string,
  "filename": string,
  "mimeType": string,
  "source": enum (Source),
  "driveFileId": string
}
ফিল্ড
attachmentId

string

অ্যাটাচমেন্টের রিসোর্স নাম। ফর্ম্যাট: spaces/{space}/messages/{message}/attachments/{attachment}.

filename

string

অ্যাটাচমেন্টের নাম।

mimeType

string

কন্টেন্টের ধরন (MIME টাইপ)।

source

enum (Source)

অ্যাটাচমেন্টের সোর্স।

driveFileId

string

শুধুমাত্র আউটপুট। Google Drive ফাইলের আইডি। সোর্স DRIVE_FILE হলে তবেই পপুলেট করা হয়। Google Drive MCP-এর সাথে ব্যবহার করুন।

ReactionSummary

JSON উপস্থাপনা
{
  "emoji": string,
  "count": integer
}
ফিল্ড
emoji

string

ইমোজি ইউনিকোড স্ট্রিং বা কাস্টম ইমোজির নাম।

count

integer

সংশ্লিষ্ট ইমোজি ব্যবহার করে মোট কতগুলি প্রতিক্রিয়া জানানো হয়েছে।

QuotedMessageMetadata

JSON উপস্থাপনা
{
  "messageId": string,
  "lastUpdateTime": string,
  "quoteType": enum (QuoteType),
  "plaintextBody": string,
  "sender": string,
  "attachments": [
    {
      object (ChatAttachmentMetadata)
    }
  ],
  "forwardedMetadata": {
    object (ForwardedMetadata)
  }
}
ফিল্ড
messageId

string

শুধুমাত্র আউটপুট। কোট বা ফরওয়ার্ড করা আসল মেসেজের রিসোর্স নাম। ফর্ম্যাট: spaces/{space}/messages/{message}

lastUpdateTime

string

শুধুমাত্র আউটপুট। কোট বা ফরওয়ার্ড করার আগে আসল মেসেজ তৈরি বা শেষবার আপডেট করার টাইমস্ট্যাম্প। ফর্ম্যাট: ISO 8601 টাইমস্ট্যাম্প।

quoteType

enum (QuoteType)

শুধুমাত্র আউটপুট। কোটের ধরন।

plaintextBody

string

শুধুমাত্র আউটপুট। কোট বা ফরওয়ার্ড করার সময় আসল মেসেজের টেক্সট বডির স্ন্যাপশট। FORWARD-এর জন্য মার্কডাউন এবং REPLY-এর জন্য প্লেন টেক্সট ব্যবহার করে ফর্ম্যাট করা হয়েছে।

sender

string

শুধুমাত্র আউটপুট। আসল মেসেজের লেখকের ডিসপ্লে নাম।

attachments[]

object (ChatAttachmentMetadata)

শুধুমাত্র আউটপুট। আসল মেসেজের অংশ ছিল এমন অ্যাটাচমেন্ট। শুধুমাত্র FORWARD কোটের ধরনের জন্য পপুলেট করা হয়েছে।

forwardedMetadata

object (ForwardedMetadata)

শুধুমাত্র আউটপুট। ফরওয়ার্ড করা মেসেজের সোর্স কথোপকথন সম্পর্কে মেটাডেটা। শুধুমাত্র FORWARD কোটের ধরনের জন্য পপুলেট করা হয়েছে।

ForwardedMetadata

JSON উপস্থাপনা
{
  "conversationId": string,
  "conversationDisplayName": string
}
ফিল্ড
conversationId

string

শুধুমাত্র আউটপুট। সোর্স কথোপকথনের রিসোর্সের নাম। ফর্ম্যাট: spaces/{space}

conversationDisplayName

string

শুধুমাত্র আউটপুট। মেসেজ ফরওয়ার্ড করার সময় সোর্স কথোপকথনের ডিসপ্লে নাম। নামযুক্ত স্পেসের ক্ষেত্রে, এটি হল স্পেসের নাম। ১:১ সরাসরি মেসেজের ক্ষেত্রে, এটি হল অন্য অংশগ্রহণকারীর নাম। নামহীন গ্রুপ চ্যাটের ক্ষেত্রে, এটি মেম্বারদের নামের উপর ভিত্তি করে তৈরি করা নাম।

UserType

Google Chat ব্যবহারকারীর ধরন।

Enums
USER_TYPE_UNSPECIFIED অনির্দিষ্ট।
HUMAN মানুষ ব্যবহারকারী।
APP অ্যাপ ব্যবহারকারী।

সোর্স

অ্যাটাচমেন্টের সোর্স।

Enums
SOURCE_UNSPECIFIED রিজার্ভ করা হয়েছে।
DRIVE_FILE ফাইলটি একটি Google Drive ফাইল।
UPLOADED_CONTENT ফাইলটি Chat-এ আপলোড করা হয়েছে।

QuoteType

মেসেজটি কোট করা উত্তর নাকি ফরওয়ার্ড করা মেসেজ তা কোটের ধরন থেকে বোঝা যায়।

Enums
QUOTE_TYPE_UNSPECIFIED রিজার্ভ করা হয়েছে। অনির্ধারিত উদ্ধৃতির ধরন।
REPLY মেসেজটি একই থ্রেডে থাকা মূল মেসেজের কোট করা উত্তর।
FORWARD মেসেজটি অন্য কথোপকথনের আসল মেসেজ থেকে বা একই কথোপকথনের অন্য থ্রেড থেকে ফরওয়ার্ড করা হয়েছে।

টুল অ্যানোটেশন

প্রদত্ত টুলের প্রাথমিক ঝুঁকি বর্ণনা করার জন্য MCP ক্লায়েন্টদের টুল অ্যানোটেশন পাঠানো হয়। বেশিরভাগ ক্লায়েন্ট এইসব ইঙ্গিতকে বিশ্বাসযোগ্য বলে মনে করে না, তবে ব্যবহারকারীকে কখন কনফার্মেশন প্রম্পট পাঠানো হবে তা নির্ধারণ করতে এগুলি ব্যবহার করা যেতে পারে।

টাইটেল স্ট্রিংয়ের সাথে, নিম্নলিখিত বুলিয়ান হিন্ট এইভাবে সংজ্ঞায়িত করা হয়:

  • readOnlyHint: সত্য হলে, টুলটি তার পরিবেশ পরিবর্তন করে না। ডিফল্ট: false.
  • destructiveHint: সত্য হলে, টুলটি ধ্বংসাত্মক অ্যাকশন করতে পারে। মিথ্যা হলে, টুলটি শুধুমাত্র যোগ করার কাজ করতে পারে। ডিফল্ট: true.
  • idempotentHint: সত্য হলে, একই আর্গুমেন্ট সহ টুলটিকে বারবার কল করলে এর এনভায়রনমেন্টে কোনও অতিরিক্ত প্রভাব পড়বে না। ডিফল্ট: false.
  • openWorldHint: সত্য হলে, টুলটি এক্সটার্নাল এন্টিটির 'মুক্ত পৃথিবী'-র সাথে ইন্টার‍্যাক্ট করতে পারে। মিথ্যা হলে, টুলটি শুধুমাত্র অভ্যন্তরীণ এন্টিটির সাথে ইন্টার‍্যাক্ট করতে পারে। যেমন, ওয়েব সার্চ টুল ওপেন ওয়ার্ল্ড হলেও মেমরি টুল ওপেন ওয়ার্ল্ড নয়।

ডেস্ট্রাক্টিভ ইঙ্গিত: ❌ | আইডেমপোটেন্ট ইঙ্গিত: ❌ | শুধু পড়ার ইঙ্গিত: ❌ | ওপেন ওয়ার্ল্ড ইঙ্গিত: ✅

অনুমোদনের স্কোপ

নিম্নলিখিত OAuth স্কোপগুলির মধ্যে একটি প্রয়োজন:

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