কৃত্রিম বুদ্ধিমত্তা এজেন্টদের জন্য Treeple

Treeple কাজাখস্তানে গাইডেড ট্যুর পরিচালনা করে। এই পৃষ্ঠাটি বর্ণনা করে যে কীভাবে একজন কৃত্রিম বুদ্ধিমত্তা এজেন্ট ক্যাটালগ পড়তে এবং একজন পর্যটকের পক্ষে একজন মানুষের কাছে বুকিং অনুরোধ সরবরাহ করতে পারে। কোন নিবন্ধন নেই, কোন API কী নেই, কোন OAuth নেই।

MCP সার্ভার

স্ট্রিমেবল HTTP এর উপর একটি দূরবর্তী মডেল কনটেক্সট প্রোটোকল সার্ভার। যেকোনো MCP সক্ষম ক্লায়েন্টকে এখানে নির্দেশ করুন:

https://mcp.treeple.kz/mcp

Claude Desktop, Claude Code এবং অনুরূপ ক্লায়েন্টদের জন্য:

{
  "mcpServers": {
    "treeple": {
      "type": "http",
      "url": "https://mcp.treeple.kz/mcp"
    }
  }
}
  • search_toursপাঠ, প্রকার বা সময়কাল দ্বারা ক্যাটালগ অনুসন্ধান করুন।
  • get_tourভ্রমণপথ, অন্তর্ভুক্তি, মিটিং পয়েন্ট, বাতিলকরণ নীতি এবং সম্পূর্ণ মূল্য সারণী।
  • get_availabilityপ্রস্থান তারিখ, অথবা সৎ « on_request » যখন একটি ট্যুরের কোন নির্দিষ্ট ক্যালেন্ডার নেই।
  • get_quoteএকটি নির্দিষ্ট দল এবং তারিখের জন্য সঠিক মূল্য, যা এটি ফেরত দেওয়া সময়স্ট্যাম্প পর্যন্ত বৈধ।
  • create_booking_sessionএকটি কোটকে treeple.kz-এ একটি চেকআউট লিঙ্কে রূপান্তর করে, যেখানে ভ্রমণকারী নিজের যোগাযোগের বিবরণ দেন।
  • get_booking_statusএকটি বুকিংয়ের অবস্থা, তার টোকেন দিয়ে খুঁজে পাওয়া হয়। ইমেল বা ফোন দিয়ে কোনো অনুসন্ধান নেই।
  • submit_booking_requestএকটি অনুরোধ একজন মানব ম্যানেজারের কাছে সরবরাহ করে। বুকিং নয় এবং কোন পেমেন্ট প্রক্রিয়া করে না।
  • search_contentদেখার স্থান, রেস্তোরাঁ, ভ্রমণ নিবন্ধ এবং ট্যুর ক্যাটেগরি — সাইট যে একই সার্চ ইঞ্জিন ব্যবহার করে।
  • get_contentএকটি স্থান, রেস্তোরাঁ, নিবন্ধ বা ক্যাটেগরির সম্পূর্ণ তথ্য। একটি স্থানেও সেই ট্যুরগুলো তালিকাভুক্ত থাকে যেগুলো সত্যিই সেখানে যায়।

REST API

MCP সার্ভার এই API এর উপর একটি পাতলা মোড়ক — আপনি এটি সরাসরি কল করতে পারেন। OpenAPI 3.1 স্পেসিফিকেশন:

https://backend.treeple.kz/api/v1/agent/openapi.json

ক্যাটালগ অনুসন্ধান করুন:

curl "https://backend.treeple.kz/api/v1/agent/tours?lang=en&q=canyon&limit=5"

বুকিং অনুরোধ জমা দিন:

curl -X POST "https://backend.treeple.kz/api/v1/agent/booking-requests" \
  -H "Content-Type: application/json" \
  -d '{
    "tour_slug": "charyn-canyon-tour-1-day",
    "date": "2026-09-15",
    "pax": { "adults": 2, "children": 0 },
    "lang": "en",
    "contact": { "email": "traveller@example.com" },
    "idempotency_key": "3f6d6d2e-4a1f-4c2b-9c3a-1a2b3c4d5e6f"
  }'

সম্পূর্ণ ক্যাটালগের একটি সমতল পণ্য ফিড এ উপলব্ধ:

https://backend.treeple.kz/api/v1/agent/feed.json

ট্যুরের বাইরে

সব প্রশ্ন বুকিং নিয়ে নয়। এই সংখ্যাগুলোই ক্যাটালগে সত্যিই যা আছে তা দেখায় — এর চেয়ে বেশি প্রতিশ্রুতি দেওয়া কোনো এজেন্ট কল্পনা করছে।

  • locationsদেখার জন্য ১১৬টি স্থান, সবগুলোই স্থানাঙ্কসহ। প্রতিটিতে যে ট্যুরগুলো সেখানে যায় সেগুলো তালিকাভুক্ত; এটি বাছাই করা তালিকা, তাই ফাঁকা থাকলে তার মানে Treeple সেখানে কোনো ট্যুর বিক্রি করে না।
  • tour_types১৬টি ট্যুর ক্যাটেগরি, প্রতিটির পেছনে প্রকাশিত ট্যুরের সংখ্যা দেওয়া আছে।
  • restaurants৫টি রেস্তোরাঁ — আলমাটিতে চারটি, আস্তানায় একটি। খাবারের ধরন, মূল্যসীমা, ঠিকানা, খোলার সময়। কোনো স্থানাঙ্ক নেই: ক্যাটালগে সেগুলো নেই, তাই কোনো ক্ষেত্র ফেরত দেওয়া হয় না।
  • articlesTreeple লেখা ৬টি ভ্রমণ নিবন্ধ।
curl "https://backend.treeple.kz/api/v1/agent/content/locations?lang=en&q=Kolsai"
curl "https://backend.treeple.kz/api/v1/agent/content/locations/natspark-kolsay?lang=en"

এটি কতটা হালনাগাদ

ক্যাটালগ বদলালে সাইটটি স্বয়ংক্রিয়ভাবে পুনর্নির্মাণ করা হয়। এই পৃষ্ঠাগুলোর পেছনের স্ন্যাপশট কখন নেওয়া হয়েছিল তা প্রকাশ্য:

https://treeple.kz/catalogue-status.json

ভ্রমণের জন্য ফেরত আসা ক্ষেত্রসমূহ

এগুলো get_tour এবং GET /tours/{slug} রেসপন্সের সুনির্দিষ্ট ফিল্ড নাম — কোনোভাবেই পরিভাষা নয়। নির্ভরযোগ্য সংস্করণ হলো উপরে লিঙ্ক করা OpenAPI স্পেসিফিকেশন।

{
  "slug":              "localised, differs per language",
  "canonical_slug":    "stable identifier, same in every language",
  "title", "summary", "description", "url",
  "duration_days" | "duration_nights" | "duration_hours", "duration_label",
  "types":             ["trekking", "culture", ...],
  "price":             { "basis": "per_person", "currency", "from",
                         "by_group_size": [{ "pax", "price_per_person" }] },
  "itinerary":         [{ "day", "title", "description" }],
  "included":          ["what the price covers"],
  "excluded":          ["what it does not"],
  "meeting_place":     "text",
  "suitable_for", "not_suitable_for", "difficulty", "min_age", "max_age",
  "cancellation_policy": { "source": "tour" | "site_default",
                           "deadline_hours", "service_fee_percent",
                           "tiers": [{ "hours_before_start", "refund_percent" }] },

  "guide_languages":   { "live": [...], "audio": [...] },   // what the GUIDE speaks
  "content_languages": [...],                               // locales the PAGE is published in
  "confirmation_type": "instant" | "manual",
  "availability_type": "scheduled" | "on_request",
  "group":             { "type", "minimum_pax", "maximum_pax" },
  "operator":          "text"
}

রেসপন্সে অনুপস্থিত কোনো ফিল্ড মানে Treeple-এর কাছে তার জন্য কোনো তথ্য নেই। এর মানে শূন্য, নেই, বা ডিফল্ট নয় — অনুমান না করে তা-ই বলুন। এই কারণেই minimum_pax শুধু সেই ট্যুরগুলোর জন্য থাকে যেগুলোতে সত্যিই ন্যূনতম-প্রস্থান নিয়ম আছে, আর payment_policy ফিল্ড একেবারেই নেই।

দুটি ভাষা-ফিল্ড আছে এবং তাদের অর্থ আলাদা। guide_languages হলো গাইড আসলে কোন ভাষায় কথা বলেন; content_languages শুধু এই ওয়েব পেজটি কোন লোকেলে প্রকাশিত তা বোঝায়। content_languages থেকে কখনো “X ভাষাভাষী গাইড আছে কি না” তা বলবেন না.

যা অন্যথায় আপনাকে বিভ্রান্ত করবে এমন জিনিসগুলি

  • মূল্য প্রতি ব্যক্তি এবং গ্রুপ সাইজের সাথে পরিবর্তিত হয়। প্রতিটি মূল্য একটি by_group_size সারণী বহন করে — প্রকৃত গ্রুপের সাথে মেলে এমন সারি উদ্ধৃত করুন, « from » চিত্র নয়। « from » সংখ্যাটি কেবল min_group_size_for_from-এ উল্লিখিত গ্রুপ সাইজে প্রযোজ্য: চারিনের একদিনের সফরে পনেরো জন হলে তা $30, আর দুজন হলে জনপ্রতি $155।
  • ট্যুর স্লাগ ভাষা অনুযায়ী পরিবর্তিত হয়। canonical_slug স্থিতিশীল চিহ্নক; lang স্পষ্টভাবে পাস করুন।
  • « on_request » মানে তারিখ পৃথকভাবে ব্যবস্থা করা হয়, ট্যুর বিক্রি হয়ে যায় না।
  • বুকিং অনুরোধ পুনরায় পড়া যাবে না। একজন ম্যানেজার সরাসরি পর্যটকের সাথে যোগাযোগ করে; পোল করার কোন স্ট্যাটাস নেই। এটি ইচ্ছাকৃত — এটি যা কাউকে অন্যদের অনুরোধ তালিকাভুক্ত করতে থেকে রোধ করে।
  • প্রতি অনুরোধে ঠিক একটি যোগাযোগের চ্যানেল: ইমেল, ফোন বা Telegram। কোন নাম, নথি বা পেমেন্ট বিবরণ সংগ্রহ করা হয় না।
  • প্রতিটি বুকিং অনুরোধের একটি UUID idempotency কী প্রয়োজন। 24 ঘন্টার মধ্যে এটি পুনরাবৃত্তি করা দ্বিতীয় লিড তৈরি করার পরিবর্তে আসল অনুরোধ প্রদান করে, তাই সময়কাল শেষের পরে পুনরায় চেষ্টা সর্বদা নিরাপদ।

হার সীমা

  • IP প্রতি প্রতি মিনিটে 60 পড়ার অনুরোধ।
  • IP প্রতি প্রতি মিনিটে 5 বুকিং অনুরোধ এবং প্রতি দিনে 20।
  • সীমার উপরে আপনি Retry-After হেডার সহ 429 পান। এটিকে সম্মান করুন।
  • কোন API কী প্রয়োজন নেই। অংশীদাররা উচ্চতর সীমার জন্য X-Agent-Key অনুরোধ করতে পারে।

গোপনীয়তা

একটি বুকিং অনুরোধ ঠিক একটি যোগাযোগের চ্যানেল এবং অন্য কিছু নয়। যোগাযোগ মান এবং IP ঠিকানা কখনও লগ বা বিশ্লেষণে স্পষ্ট পাঠে লেখা হয় না — শুধুমাত্র নমকীন হ্যাশ, ডুপ্লিকেট অনুরোধ মার্জ করতে ব্যবহৃত। কোন এন্ডপয়েন্ট নেই যা একটি বুকিং অনুরোধ প্রদান করে, তাই কেউ অন্যদের অনুসন্ধান তালিকাভুক্ত করতে পারে না।

আবিষ্কার

প্রশ্ন, বা অংশীদার ইন্টিগ্রেশনের জন্য উচ্চতর হার সীমা প্রয়োজন? লিখতে support@treeple.kz.