MCP Tools Reference: chatmcp.googleapis.com

টুল: search_messages

কীওয়ার্ড ও ফিল্টার ব্যবহার করে Google Chat মেসেজ সার্চ করে এবং সেগুলি Markdown ফর্ম্যাটে দেখায়। ব্যবহারকারীর অ্যাক্সেস আছে এমন সব স্পেস জুড়ে কাজ করে অথবা কোনও নির্দিষ্ট কথোপকথনের জন্য স্কোপ করা যেতে পারে।

search_messages বনাম অন্যান্য সার্চ বা রিড টুল ব্যবহার করার সিদ্ধান্ত নেওয়ার সময় এই নির্দেশিকা অনুসরণ করুন:

  • সম্ভাব্য একাধিক স্পেস জুড়ে বা কোনও পরিচিত কথোপকথন আইডি ছাড়াই নির্দিষ্ট মেসেজ কন্টেন্ট, কীওয়ার্ড, উল্লেখ, লিঙ্ক, প্রেরক বা না পড়া মেসেজ খুঁজতে search_messages ব্যবহার করুন।
  • আপনি নির্দিষ্ট স্পেস বা থ্রেড আইডি জানলে এবং কালানুক্রমিকভাবে মেসেজ পড়তে চাইলে list_messages ব্যবহার করুন।
  • স্পেসের ডিসপ্লে নাম বা অংশগ্রহণকারীদের নাম দিয়ে কথোপকথন আইডির মতো স্পেস মেটাডেটা খুঁজতে search_conversations ব্যবহার করুন (এটি শুধু মেটাডেটা সার্চ করে, মেসেজের কন্টেন্ট নয়)।

নির্দিষ্ট ফিল্টার ছাড়া searchParameters প্রদান করা হলে, ব্যবহারকারীর অ্যাক্সেস আছে এমন কথোপকথন জুড়ে সাম্প্রতিক মেসেজগুলি ফেরত দেওয়া হয়।

search_messages 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": "search_messages",
    "arguments": {
      // Provide these details according to the MCP tool specification.
    }
  },
  "jsonrpc": "2.0",
  "id": 1
}'

ইনপুট স্কিমা

SearchMessagesRequest

JSON উপস্থাপনা
{
  "searchParameters": {
    object (SearchParameters)
  },
  "pageSize": integer,
  "pageToken": string
}
ফিল্ড
searchParameters

object (SearchParameters)

প্রয়োজনীয়। সার্চের জন্য ব্যবহার করার সার্চ প্যারামিটার।

pageSize

integer

ঐচ্ছিক। ফলাফলের সর্বাধিক সংখ্যা (সর্বাধিক ১০০)। অনির্দিষ্ট থাকলে, সর্বাধিক ২৫টি ফেরত দেওয়া হয়।

pageToken

string

ঐচ্ছিক। আগের search_messages কল থেকে পাওয়া একটি পৃষ্ঠা টোকেন। পরবর্তী পৃষ্ঠাটি ফিরিয়ে আনতে এটি প্রদান করুন।

SearchParameters

JSON উপস্থাপনা
{
  "keywords": [
    string
  ],
  "conversationId": string,
  "sender": string,
  "isUnread": boolean,
  "hasLink": boolean,
  "startTime": string,
  "endTime": string,
  "mentionsMe": boolean,
  "conversationIncludesUser": string,
  "spaceDisplayNames": [
    string
  ],
  "conversationTypes": [
    enum (ConversationType)
  ],
  "hasAttachment": boolean
}
ফিল্ড
keywords[]

string

ঐচ্ছিক। ফলাফল ফিল্টার করার জন্য ব্যবহৃত কীওয়ার্ডের সেট।

conversationId

string

ঐচ্ছিক। সার্চের পরিধিকে নির্দিষ্ট কথোপকথন শনাক্তকারীতে সীমাবদ্ধ করে, যেমন search_conversations টুল থেকে রিটার্ন করা হয়। ফর্ম্যাট: spaces/{ID}।

sender

string

ঐচ্ছিক। নির্দিষ্ট ব্যবহারকারীর থেকে পাওয়া মেসেজের জন্য ফিল্টার। প্রেরকের ইমেল বা রিসোর্সের নাম ব্যবহার করা যেতে পারে। ব্যবহারকারীর রিসোর্স নাম users/{ID} হিসেবে ফর্ম্যাট করা হয়, যেখানে {ID} কোনও ব্যক্তির আইডি বা তার ইমেল আইডি হতে পারে।

isUnread

boolean

ঐচ্ছিক। কল করা ব্যবহারকারী পড়েননি এমন মেসেজের জন্য ফিল্টার।

hasLink

boolean

ঐচ্ছিক। অন্তত একটি URL আছে এমন মেসেজের জন্য ফিল্টার।

startTime

string

ঐচ্ছিক। এই সময়ের পরে তৈরি করা মেসেজের জন্য ফিল্টার। ফর্ম্যাট: ISO 8601 টাইমস্ট্যাম্প।

endTime

string

ঐচ্ছিক। এই সময়ের আগে তৈরি করা মেসেজের জন্য ফিল্টার। ফর্ম্যাট: ISO 8601 টাইমস্ট্যাম্প।

mentionsMe

boolean

ঐচ্ছিক। কল করা ব্যবহারকারীর নাম স্পষ্টভাবে উল্লেখ করা আছে এমন মেসেজের জন্য ফিল্টার।

conversationIncludesUser

string

ঐচ্ছিক। DM এবং গ্রুপ চ্যাটে নির্দিষ্ট ব্যবহারকারীর ইমেল বা আইডি সহ মেসেজ ফিল্টার করুন।

spaceDisplayNames[]

string

ঐচ্ছিক। স্পেসের নামের তালিকা অনুযায়ী ফিল্টার করুন; স্পেসের ডিসপ্লে নাম আংশিকভাবে মিলেছে। মনে রাখবেন: শুধুমাত্র সেরা ৫টি ম্যাচ দেখানো হয়।

conversationTypes[]

enum (ConversationType)

ঐচ্ছিক। কথোপকথনের ধরন অনুযায়ী ফিল্টার করুন।

hasAttachment

boolean

ঐচ্ছিক। অন্তত একটি অ্যাটাচমেন্ট আছে এমন মেসেজের জন্য ফিল্টার। মনে রাখবেন: এই ফিল্ডটি ডেভেলপ করা হচ্ছে এবং এখনও সব পরিবেশে কাজ নাও করতে পারে।

ConversationType

কথোপকথনের ধরন নির্ধারণ করে।

Enums
CONVERSATION_TYPE_UNSPECIFIED অনির্দিষ্ট।
NAMED_SPACE নাম দেওয়া স্পেস।
GROUP_CHAT ৩ বা তার বেশি সংখ্যক ব্যক্তির মধ্যে গ্রুপ চ্যাট।
DIRECT_MESSAGE দুজন ব্যক্তির মধ্যে অথবা একজন ব্যক্তি ও Chat অ্যাপের মধ্যে সরাসরি মেসেজ।

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

Google Chat মেসেজ সার্চ করার জন্য উত্তর। next_page_token পপুলেট করা থাকলে, ফলাফলের পরবর্তী পৃষ্ঠা ফিরিয়ে আনতে, সেই টোকেন সহ SearchMessages কল আবার কল করা যেতে পারে।

SearchMessagesResponse

JSON উপস্থাপনা
{
  "messages": [
    {
      object (ChatMessage)
    }
  ],
  "nextPageToken": string
}
ফিল্ড
messages[]

object (ChatMessage)

সার্চের মাপকাঠির সাথে ম্যাচ করা মেসেজ অবজেক্টের তালিকা।

nextPageToken

string

পরবর্তী পৃষ্ঠা ফিরিয়ে আনতে page_token হিসেবে পাঠানো যেতে পারে এমন টোকেন। এই ফিল্ড বাদ দেওয়া হলে, পরবর্তী কোনও পৃষ্ঠা থাকবে না।

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: সত্য হলে, টুলটি এক্সটার্নাল এন্টিটির 'মুক্ত পৃথিবী'-র সাথে ইন্টার‍্যাক্ট করতে পারে। মিথ্যা হলে, টুলটি শুধুমাত্র অভ্যন্তরীণ এন্টিটির সাথে ইন্টার‍্যাক্ট করতে পারে। যেমন, ওয়েব সার্চ টুল ওপেন ওয়ার্ল্ড হলেও মেমরি টুল ওপেন ওয়ার্ল্ড নয়।

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

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

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

  • https://www.googleapis.com/auth/chat.messages.readonly
  • https://www.googleapis.com/auth/chat.spaces.readonly
  • https://www.googleapis.com/auth/chat.memberships.readonly
  • https://www.googleapis.com/auth/chat.users.readstate.readonly