Treeple untuk ejen AI

Treeple menjalankan lawatan berpandu di Kazakhstan. Halaman ini menerangkan bagaimana ejen AI boleh membaca katalog dan menyerahkan permintaan tempahan kepada manusia bagi pihak pengembara. Tiada pendaftaran, tiada kunci API, tiada OAuth.

Pelayan MCP

Pelayan Model Context Protocol jauh melalui HTTP Streamable. Arahkan mana-mana pelanggan yang mampu MCP ke:

https://mcp.treeple.kz/mcp

Untuk Claude Desktop, Claude Code dan pelanggan serupa:

{
  "mcpServers": {
    "treeple": {
      "type": "http",
      "url": "https://mcp.treeple.kz/mcp"
    }
  }
}
  • search_toursCari katalog mengikut teks, jenis atau tempoh.
  • get_tourItinerari, incapian, titik pertemuan, dasar pembatalan dan jadual harga lengkap.
  • get_availabilityTarikh berlepas, atau jujur « on_request » apabila lawatan tidak mempunyai kalendar tetap.
  • get_quoteHarga tepat untuk kumpulan dan tarikh yang dinamakan, sah sehingga cap masa yang dikembalikannya.
  • create_booking_sessionMenukar sebut harga menjadi pautan pembayaran di treeple.kz, tempat pengembara memasukkan butiran hubungan mereka sendiri.
  • get_booking_statusStatus satu tempahan, dicari melalui tokennya. Tiada carian melalui e-mel atau telefon.
  • submit_booking_requestMenyerahkan permintaan kepada pengurus manusia. Bukan tempahan dan tidak memproses pembayaran.
  • search_contentTempat menarik, restoran, artikel perjalanan dan kategori lawatan — enjin carian yang sama digunakan oleh laman ini.
  • get_contentSatu tempat, restoran, artikel atau kategori dalam penuh. Sesuatu tempat juga menyenaraikan lawatan yang benar-benar melawatnya.

API REST

Pelayan MCP adalah pembungkus nipis di atas API ini — anda boleh memanggilnya secara langsung. Spesifikasi OpenAPI 3.1:

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

Cari katalog:

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

Serahkan permintaan tempahan:

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

Suapan produk rata seluruh katalog tersedia di:

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

Di luar lawatan

Bukan setiap soalan tentang tempahan. Kiraan ini ialah apa yang benar-benar ada dalam katalog — ejen yang menjanjikan lebih daripada ini hanya mereka-reka.

  • locations116 tempat menarik, semuanya dengan koordinat. Setiap satu menyenaraikan lawatan yang melawatnya; senarai yang dipilih susun, jadi yang kosong bermaksud Treeple tidak menjual lawatan di situ.
  • tour_types16 kategori lawatan, setiap satu dengan bilangan lawatan yang diterbitkan di belakangnya.
  • restaurants5 restoran — empat di Almaty, satu di Astana. Masakan, julat harga, alamat, waktu operasi. Tiada koordinat: katalog tidak menyimpannya, jadi tiada medan dikembalikan.
  • articles6 artikel perjalanan yang ditulis oleh Treeple.
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"

Sejauh mana kemas kini ini

Laman ini dibina semula secara automatik apabila katalog berubah. Masa snapshot di sebalik halaman ini diambil adalah umum:

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

Medan yang dikembalikan untuk lawatan

Ini ialah nama medan yang tepat dalam respons get_tour dan GET /tours/{slug} — bukan parafrasa. Versi autoritatif ialah spesifikasi OpenAPI yang dipautkan di atas.

{
  "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"
}

Medan yang tiada dalam respons bermaksud Treeple tidak mempunyai data untuknya. Ia tidak bermaksud sifar, tiada, atau nilai lalai — nyatakan begitu daripada menganggap. Sebab itu minimum_pax hanya muncul untuk lawatan yang benar-benar mempunyai peraturan minimum-keberangkatan, dan sebab itu tiada medan payment_policy langsung.

Terdapat dua medan bahasa dan maknanya berbeza. guide_languages ialah bahasa yang benar-benar dituturkan oleh pemandu; content_languages hanya menunjukkan locale yang diterbitkan untuk laman web ini. Jangan sesekali menjawab “adakah ada pemandu yang boleh bertutur X” berdasarkan content_languages.

Perkara yang sebaliknya akan mengelirukan anda

  • Harga adalah setiap orang dan berubah dengan saiz kumpulan. Setiap harga membawa jadual by_group_size — petik baris yang sepadan dengan kumpulan sebenar, bukan angka « from ». Angka « from » hanya sah pada saiz kumpulan dalam min_group_size_for_from: bagi lawatan sehari Charyn ia $30 untuk lima belas orang, manakala berdua membayar $155 seorang.
  • Slug lawatan berbeza mengikut bahasa. canonical_slug adalah pengecam stabil; lulus lang secara eksplisit.
  • « on_request » bermakna tarikh diatur secara individu, bukan lawatan terjual habis.
  • Permintaan tempahan tidak dapat dibaca semula. Pengurus menghubungi pengembara secara langsung; tiada status untuk dikaji. Ini disengajakan — inilah yang menghalang sesiapa daripada menyenaraikan permintaan orang lain.
  • Tepat satu saluran hubungan per permintaan: e-mel, telefon atau Telegram. Tiada nama, dokumen atau butiran pembayaran dikumpul.
  • Setiap permintaan tempahan memerlukan kunci idempotency UUID. Mengulanginya dalam 24 jam memulangkan permintaan asal dan bukannya mencipta prospek kedua, jadi mencuba semula selepas habis masa selalu selamat.

Had kadar

  • 60 permintaan baca setiap minit setiap IP.
  • 5 permintaan tempahan setiap minit dan 20 setiap hari setiap IP.
  • Di atas had anda mendapatkan 429 dengan pengepala Retry-After. Hormati itu.
  • Kunci API tidak diperlukan. Mitra boleh meminta X-Agent-Key untuk had yang lebih tinggi.

Privasi

Permintaan tempahan membawa tepat satu saluran hubungan dan bukan apa-apa yang lain. Nilai hubungan dan alamat IP tidak pernah ditulis dalam teks biasa ke log atau analitik — hanya cincang bersalut, digunakan untuk menggabungkan permintaan salinan. Tiada titik akhir yang memulangkan permintaan tempahan, jadi tiada siapa yang boleh menyenaraikan pertanyaan orang lain.

Penemuan

Soalan, atau perlukan had kadar yang lebih tinggi untuk integrasi rakan? Tulis ke support@treeple.kz.