Panggil MyTools langsung dengan WebMCP
WebMCP adalah standar web yang sedang tumbuh, yang memungkinkan sebuah halaman menyerahkan daftar fungsi yang bisa dipanggil kepada agen AI, alih-alih layar yang harus ditafsirkan. Halaman mendaftarkan alat pada document.modelContext — masing-masing dengan nama, deskripsi, dan skema JSON — dan agen yang berjalan di browser itu bisa mendaftarnya lalu memanggilnya.
MyTools mendaftarkan tiga alat untuk seluruh situs di setiap halaman, ditambah tiga lagi di masing-masing 55 halaman alatnya: baca statusnya, jalankan operasinya, simpan hasilnya. Pekerjaannya tetap berlangsung di browser, di mesin pengguna sendiri. WebMCP mengubah siapa yang menekan tombolnya, bukan ke mana filenya pergi.
Di mana ini berjalan, dan seberapa mapan statusnya
Browser ChatGPT sudah memanggil alat-alat ini hari ini. OpenAI sudah menambahkan dukungan WebMCP ke browser bawaan aplikasi desktop ChatGPT, jadi alat-alat di bawah ini bisa dipanggil di sana tanpa flag, tanpa token uji coba, dan tanpa penyiapan apa pun dari sisi Anda. MyTools sudah benar-benar dikendalikan dengan cara itu di lapangan: sebuah crash khusus browser tersebut dilaporkan oleh seseorang yang agennya sudah memakai alat-alat ini, dan diperbaiki pada Agustus 2026.
Di Chrome statusnya masih origin trial. Uji cobanya berjalan dari Chrome 149 sampai Chrome 156, kira-kira sampai akhir 2026. MyTools memegang token untuk origin produksinya, jadi di Chrome yang mendukung, alat-alatnya sudah tersedia tanpa perlu mengaktifkan flag apa pun. Kalau masa uji cobanya berakhir tanpa API-nya benar-benar dirilis, document.modelContext lenyap dari Chrome dan alat-alat ini ikut hilang bersamanya — itulah sebabnya titik masuk lewat URL di bawah tidak akan ke mana-mana.
Spesifikasinya masih rancangan, bukan standar yang sudah disahkan. WebMCP adalah Draft Community Group Report dari W3C Web Machine Learning Community Group, disunting oleh para insinyur di Google dan Microsoft, dan secara tegas berada di luar jalur standar W3C. Bentuknya pun sudah pernah berubah sekali: dulu alat didaftarkan pada navigator.modelContext sebelum API-nya pindah ke document.modelContext. Kalau Anda bekerja dari materi yang lebih lama, periksa hal itu lebih dulu.
Deteksi fiturnya, jangan berasumsi. document.modelContext ada atau tidak ada sama sekali, dan karena lebih dari satu implementasi datang dengan jadwalnya masing-masing, hanya itulah pengujian yang layak dilakukan. Jangan pernah mengendus user agent untuk memastikannya. Di tempat API-nya tidak ada, tidak ada yang rusak di situs ini — alat-alatnya sekadar tidak tersedia, dan setiap halaman tetap berfungsi sebagai halaman biasa.
Ada jalan cadangan yang berjalan di mana saja. Di tempat WebMCP tidak tersedia, kendalikan situs ini lewat titik masuk URL-nya: 50 dari 55 alat terbuka dengan file sudah dimuat dari URL yang Anda susun sendiri. Kedua mekanisme itu mencakup operasi yang sama; yang berbeda hanya kenyamanannya.
Untuk pengujian lokal, di Chrome tanpa token origin trial, aktifkan chrome://flags/#enable-webmcp-testing.
Bacaan lanjutan — Rancangan spesifikasinya · Dokumentasi WebMCP dari Chrome
Tiga alat di setiap halaman
Ketiganya terdaftar di seluruh situs, termasuk di halaman yang sama sekali bukan alat — beranda, artikel, halaman ini. Lewat merekalah agen menemukan jalan menuju alat yang tepat.
find_mytools_tools — Cari di katalog. Menerima query, category, inputType, dan limit — semuanya opsional — lalu mengembalikan alat yang cocok beserta slug, path halaman, dan apakah alat itu menerima URL file. Hanya membaca. Keluarannya dibatasi, jadi persempit pencarian alih-alih meminta semuanya sekaligus.
open_mytools_tool — Buka sebuah alat, siap dipakai. Menerima slug — wajib, seperti yang dikembalikan find_mytools_tools — ditambah urls opsional untuk langsung memuat file jarak jauh, dan carryResult, yang menyerahkan file yang baru saja dihasilkan alat saat ini kepada alat yang dibuka, sehingga Anda tidak mendarat di layar unggah yang kosong.
suggest_mytools_pipeline — Diberi slug sebuah alat dan nama file yang dihasilkannya, kembalikan daftar alat yang bisa menerima file itu berikutnya. Hanya tujuan yang cocok yang muncul: kumpulan banyak file tidak pernah ditawarkan ke alat file tunggal, dan tidak ada alat yang ditawari format yang tidak bisa dibukanya.
Tiga lagi di setiap halaman alat
Semua 55 alat membawa triplet yang sama, dinamai dari slug alatnya dengan tanda hubung diganti garis bawah. Di /pdf/rotate-pdf ketiganya adalah get_rotate_pdf_state, run_rotate_pdf, dan download_rotate_pdf.
get_<tool>_state — Apa yang sedang dimuat, bagaimana setelannya, dan petunjuk yang menyebutkan panggilan berikutnya. Baca ini sebelum menjalankan apa pun: dari sinilah jumlah halaman, durasi, dan dimensi piksel berasal, dan justru itulah yang membuat argumen Anda berarti.
run_<tool> — Kerjakan pekerjaannya. Argumennya berbeda di tiap alat dan dijelaskan dalam skemanya; apa pun yang tidak Anda sebutkan tetap memakai setelan yang tampil di layar. Panggilannya baru kembali setelah operasinya selesai, jadi tidak ada yang perlu di-polling — pada encoding video yang panjang, waktunya memang selama proses encoding itu.
download_<tool> — Simpan hasilnya ke perangkat pengguna. Alat ini baru didaftarkan setelah ada hasil, jadi kehadirannya di daftar alat adalah tanda bahwa pekerjaannya sudah selesai. Alat yang menghasilkan beberapa file menerima index untuk menyimpan satu file, atau zip untuk menyimpan semuanya sebagai satu arsip.
Tiga alat berakhir pada URL yang dipublikasikan, bukan pada sebuah file — dua alat yang memposting ke Facebook dan alat pengunggah YouTube — sehingga ketiganya tidak mendaftarkan alat download. Ketiganya juga menolak bekerja bila belum ada yang masuk: proses login membuka popup yang hanya bisa dibuka oleh klik sungguhan.
Satu contoh utuh
Memutar PDF yang berada di sebuah URL, dari awal sampai akhir. Setiap respons di bawah ini adalah keluaran asli dari alat-alat tersebut, bukan gambaran kasarnya.
1. Cari alatnya.
find_mytools_tools({ query: "rotate pdf", inputType: "application/pdf", limit: 3 })
→ { "total": 55, "matched": 1, "tools": [
{ "slug": "rotate-pdf", "title": "Rotate PDF",
"description": "Rotate PDF pages in one click",
"multiple": true, "byUrl": true } ] }2. Buka dengan file yang sudah dimuat. Alat khusus halaman berubah mengikuti halamannya, jadi baca ulang daftar alat setelahnya.
open_mytools_tool({ slug: "rotate-pdf",
urls: ["https://example.com/rental-application.pdf"] })
→ "Opened Rotate PDF with 1 file(s) loading from URL. Everything is processed
locally in the browser. The page-specific tools available to you have changed."3. Baca statusnya. Jumlah halaman berasal dari PDF-nya sendiri, dan itulah yang membuat rentang halaman layak dikirim.
get_rotate_pdf_state({})
→ { "phase": "configure",
"pdfs": [ { "name": "rental-application.pdf", "pages": 2, "rotations": [0, 0] } ],
"saving": false, "result": null,
"hint": "Call run_rotate_pdf with a rotation, optionally narrowed with pages,
to turn the loaded PDFs." }4. Jalankan. Panggilannya kembali saat rotasinya selesai, dan download_rotate_pdf kini tersedia.
run_rotate_pdf({ rotation: 90 })
→ "Rotated 1 PDF(s) by 90°. Call download_rotate_pdf to save it."5. Simpan. Filenya menuju perangkat pengguna; Anda tidak pernah menerima datanya.
download_rotate_pdf({})
→ "Saving rental-application-rotated.pdf to the user's device."Menyerahkan keputusannya kembali ke pengguna
Tidak semua argumen layak Anda tentukan sendiri. Bagian mana dari sebuah foto yang harus dipertahankan, halaman mana dari hasil pindaian yang benar-benar penting, seberapa keras itu sudah cukup keras — semuanya butuh mata yang melihat langsung filenya. Alat-alat ini dirancang supaya Anda bisa berhenti, membiarkan pengguna yang memutuskan, lalu melanjutkan. get_<tool>_state melaporkan apa yang ada di layar saat itu juga, termasuk perubahan yang baru saja dibuat pengguna dengan mouse-nya, dan setiap argumen yang tidak Anda sebutkan pada run_<tool> tetap memakai nilai yang tampil di layar. Jangan sebutkan satu pun, dan prosesnya berjalan persis dengan apa yang mereka setel.
Alat pemotong gambar, dengan satu tarikan kotak sungguhan di tengah prosesnya:
get_crop_image_state({})
→ … "source": { "width": 6240, "height": 4160 },
"selection": { "x": 1459, "y": 420, "width": 3330, "height": 3328 }
← the user drags the box over what they want to keep
get_crop_image_state({})
→ … "selection": { "x": 2910, "y": 831, "width": 3330, "height": 3329 }
run_crop_image({})
→ "Cropped to 3330×3329 pixels out of 6240×4160 (5507 KB, image/jpeg).
Call download_crop_image to save it."Sampaikan apa yang Anda butuhkan pada giliran yang sama saat Anda membuka alatnya — "tarik kotaknya ke bagian yang ingin Anda simpan, lalu bilang kalau sudah siap" — lalu baca statusnya lagi begitu mereka menjawab. Tidak ada bagian halaman yang terkunci selama Anda menunggu; pengguna sedang bekerja di tab browser biasa.
Di sinilah letak garis pemisah antara halaman alat dan sebuah API. Pekerjaan yang tidak perlu dilihat siapa pun sebaiknya berada di balik panggilan API, dan menaruh browser di depannya hanya menambah beban tanpa guna. Sebuah halaman baru layak ada ketika seseorang memang harus melihat filenya untuk bisa memutuskan sesuatu — dan WebMCP-lah yang membuat agen tetap berguna melewati momen itu: memuat, mengukur, mengonversi, dan menyimpan di kedua sisi sebuah penilaian yang memang bukan urusannya.
Empat hal yang menentukan perilakunya
Keluaran dibatasi sekitar 1500 karakter. Jadi respons status berupa ringkasan, bukan seluruh isinya. Daftar yang panjang dipotong dari ujungnya dan ditandai sebagai terpotong, dan isi file tidak pernah muncul di dalamnya. Kalau Anda butuh seluruh katalog, bukan sekadar hasil pencarian, ambil capabilities.json saja.
Tidak ada data biner yang melintas. Anda tidak bisa menyerahkan file ke sebuah alat dan tidak pernah menerima file. File masuk lewat URL yang diambil browser, dan keluar lewat download_<tool>, yang memicu unduhan browser biasa ke mesin pengguna. Semua yang Anda pertukarkan dengan alat-alat ini berupa teks.
Panggilan bisa dibatalkan. Setiap eksekusi mendapat AbortSignal. Membatalkan sebuah proses benar-benar menghentikan pekerjaannya, bukan meninggalkannya terkatung-katung — encoding video dimatikan, tidak dibiarkan berjalan di worker — dan hasilnya kembali sebagai pembatalan, bukan kegagalan.
Daftar alat berubah saat Anda berpindah halaman. Hanya alat milik halaman saat ini yang terdaftar. Membuka alat lain akan mencabut pendaftaran triplet halaman sebelumnya dan mendaftarkan yang baru, jadi baca ulang daftar alat setelah setiap open_mytools_tool alih-alih menganggap yang Anda lihat sebelumnya masih ada.
Pertanyaan yang jawabannya perlu diketahui
Alat MyTools mana saja yang bisa dipanggil agen secara langsung?
faq.coverage.answer
Apakah ini hanya berjalan di Chrome?
Tidak. Browser bawaan aplikasi desktop ChatGPT mendukung WebMCP, dan Chrome menyediakannya bagi peserta origin trial seperti MyTools sampai Chrome 156. Spesifikasinya adalah rancangan community group W3C yang bisa diterapkan browser mana pun yang punya kemampuan agentik, jadi perlakukan ketersediaannya sebagai sesuatu yang dideteksi saat runtime, bukan sebagai daftar yang sudah pasti.
Apakah butuh kunci API atau akun?
Tidak. Tidak ada pendaftaran, login, kunci, maupun kuota. Kalau browser-nya menyediakan WebMCP, alat-alatnya sudah ada sejak kunjungan pertama.
Apakah memanggil run_<tool> mengunggah filenya ke server?
Tidak. Pekerjaannya berjalan di browser dan MyTools tidak punya penyimpanan file di sisi server. Satu-satunya pengecualian adalah memuat file dari URL: server kami mengambil URL yang Anda berikan agar browser bisa mengolah datanya, dan tidak menyimpannya.
Apa yang terjadi kalau browser tidak mendukung WebMCP?
Tidak ada yang rusak. document.modelContext sekadar tidak ada dan tidak ada alat yang didaftarkan; halamannya tetap berfungsi sebagai halaman biasa. Beralihlah ke titik masuk lewat URL, yang sama sekali tidak butuh dukungan browser.
Bisakah beberapa alat dirangkai tanpa mengunduh di tengah jalan?
Bisa. Panggil suggest_mytools_pipeline dengan slug dan nama file yang baru dihasilkan untuk melihat alat mana yang menerimanya, lalu open_mytools_tool dengan carryResult, dan alat berikutnya terbuka dengan file itu sudah dimuat.
Bisakah agen dan manusia menggarap alat yang sama sekaligus?
faq.together.answer