Firecrawl MCP
resmiMenambahkan kemampuan web scraping dan pencarian yang kuat ke klien LLM seperti Cursor dan Claude.
Apa yang bisa Anda lakukan dengan Firecrawl MCP?
- Scrape URL yang diketahui — Minta asisten Anda untuk mengambil satu halaman menjadi Markdown bersih atau JSON terstruktur yang sesuai dengan skema yang Anda berikan melalui
firecrawl_scrape. - Temukan URL situs — Minta asisten untuk menampilkan daftar URL yang terindeks di sebuah situs dengan
firecrawl_mapsebelum memutuskan halaman mana yang akan diambil. - Cari di web — Dapatkan hasil berperingkat untuk sebuah kueri dengan
firecrawl_search, dengan opsi mengambil konten halaman lengkap untuk beberapa hasil. - Crawl banyak halaman — Ekstrak konten di seluruh situs menggunakan
firecrawl_crawl, dibatasi denganlimit,includePaths/excludePaths, ataumaxDiscoveryDepth. - Kendalikan browser — Klik, ketik, isi formulir, atau navigasi halaman dinamis dengan
firecrawl_interact, lanjutkan sesi melaluiscrapeId. - Periksa penggunaan kredit — Tanyakan berapa banyak kredit Firecrawl yang tersisa atau untuk apa kredit tersebut digunakan dengan
firecrawl_credit_usage.
Dokumentasi
Firecrawl MCP Server
Server Model Context Protocol (MCP) yang menghadirkan Firecrawl, API konteks untuk agen AI, ke klien yang kompatibel dengan MCP: mencari, melakukan scrape, dan berinteraksi dengan web langsung serta mendapatkan kembali Markdown bersih atau data terstruktur.
Terima kasih banyak kepada @vrknetha, @knacklabs atas implementasi awalnya!
Fitur
- Mencari di web, secara opsional dengan konten halaman penuh untuk setiap hasil
- Mencari indeks untuk sumber pengembang (issue GitHub, pull request yang sudah di-merge, README, dan dokumentasi), sumber pemerintah AS, dan makalah ilmiah (PubMed, bioRxiv, medRxiv, arXiv)
- Melakukan scrape URL apa pun menjadi Markdown bersih atau JSON terstruktur
- Mengurai PDF dan dokumen
- Merayapi situs untuk konten dari banyak halaman, atau memetakannya untuk menemukan URL-nya
- Berinteraksi dengan halaman di browser sungguhan: klik, ketik, isi formulir, dan navigasi halaman dinamis
- Menjalankan pekerjaan Agent untuk riset multi-sumber yang mengembalikan data terstruktur
- Memantau halaman dan mendapat notifikasi saat kontennya berubah
- Memeriksa penggunaan kredit Firecrawl saat ini dan historis
- Percobaan ulang otomatis dan pembatasan laju
- Dukungan cloud dan self-hosted
- Dukungan SSE
Cobalah MCP Server kami di playground MCP.so atau di Klavis AI.
Kapan Menggunakan Server Ini
- Gunakan
firecrawl_scrapeketika Anda memiliki URL yang diketahui dan menginginkan kontennya sebagai markdown atau sebagai JSON yang sesuai dengan skema yang Anda berikan. - Gunakan
firecrawl_mapketika Anda perlu menemukan URL di sebuah situs tanpa mengambil kontennya. - Gunakan
firecrawl_crawlketika Anda memerlukan konten dari banyak halaman di bawah sebuah situs; aturlimit,includePaths/excludePaths, ataumaxDiscoveryDepthuntuk membatasinya. - Gunakan
firecrawl_searchketika Anda memulai dari kueri alih-alih URL dan menginginkan hasil web yang diperingkat. Hasil membawa kutipan; ambil halaman penuh denganfirecrawl_scrapepada URL yang Anda butuhkan.scrapeOptionsmengambil halaman setiap hasil dalam panggilan yang sama dan menagih masing-masing sebagai scrape, jadi simpanlah untuk teks lengkap dari beberapa hasil (endpoint khusus pencarian tidak pernah mengambil konten). - Gunakan
firecrawl_interactketika sebuah halaman memerlukan tindakan klik, ketik, atau navigasi sebelum Anda dapat membacanya: berikanurluntuk halaman baru atauscrapeIduntuk melanjutkan pada halaman yang sudah Anda scrape. - Gunakan alat
firecrawl_monitor_*ketika halaman yang sama perlu diperiksa pada jadwal berulang dengan diff dan peringatan perubahan, alih-alih diambil sekali. - Gunakan
firecrawl_credit_usageuntuk memeriksa sisa kredit atau kredit apa yang telah dibelanjakan, per bulan atau per hari, secara opsional dirinci berdasarkan endpoint atau kunci API. - Pertimbangkan hal lain ketika Anda perlu menjaga sesi browser tetap terbuka di sepanjang banyak langkah Anda sendiri dengan logika percobaan ulang dan penghentian Anda sendiri: setiap panggilan
firecrawl_interactmenjalankan satu giliranpromptataucodehingga selesai dan mengembalikan kendali. Sesi dapat bertahan di antara panggilan melaluiscrapeIddan berakhir denganfirecrawl_interact_stop, tetapi Anda tidak dapat mengendalikannya secara interaktif langkah demi langkah dari sisi klien dalam satu panggilan.
Server ini mencantumkan 27 alat ketika profil lengkap terdaftar dengan pengaturan default (alat umpan balik disertakan, tidak berjalan dalam mode tanpa kunci lokal). Mengatur FIRECRAWL_NO_SEARCH_FEEDBACK=1 dan/atau FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 menghapus alat umpan balik yang sesuai dan mengurangi jumlah ini, begitu pula startup tanpa kunci lokal. Untuk klien dengan batas slot alat: endpoint tanpa kunci yang dihosting (https://mcp.firecrawl.dev/v2/mcp, tanpa kunci API) hanya mengekspos 3 (firecrawl_scrape, firecrawl_search, firecrawl_parse), dan endpoint khusus pencarian khusus (https://mcp.firecrawl.dev/v2/mcp-search) mengekspos kumpulan tetap 9 alat (pencarian, pengembang, pemerintah, dan pencarian riset, plus pencarian katalog Alexandria dan eksekusi).
Instalasi
MCP yang Dihosting (tingkat gratis tanpa kunci)
Hubungkan ke server jarak jauh yang dihosting tanpa penyiapan:
https://mcp.firecrawl.dev/v2/mcp
Pada tingkat gratis tanpa kunci, scrape, search, dan parse berfungsi tanpa kunci API (dibatasi lajunya). Alat lain seperti crawl, map, dan agent tetap memerlukan kunci.
Utamakan OAuth atau kunci API kapan pun pengguna dapat mendaftar. Ini membuka kumpulan alat lengkap dan batas yang lebih tinggi.
Untuk koneksi akun interaktif, konfigurasikan klien MCP Anda untuk menggunakan URL server ini. Ini adalah endpoint MCP, bukan halaman browser; gunakan alur koneksi akun klien dan jangan tambahkan entri server Firecrawl kedua saat menyambung ulang:
https://mcp.firecrawl.dev/v2/mcp-oauth
Untuk koneksi kunci API (misalnya, integrasi tanpa pengawasan), pertahankan URL server sebagai:
https://mcp.firecrawl.dev/v2/mcp
Lalu konfigurasikan header aman atau pengaturan rahasia klien dengan:
Authorization: Bearer <FIRECRAWL_API_KEY>
Jangan pernah menaruh kunci API di URL server. Jangan pernah menaruh kunci API di obrolan agen. Konfigurasikan langsung di klien atau manajer rahasia. Lihat panduan penyiapan MCP yang dihosting dan panduan orientasi agen untuk instruksi khusus klien.
Menamai integrasi Anda
Integrasi yang terhubung melalui HTTP dapat menamai dirinya sendiri dengan header X-Firecrawl-Origin, misalnya X-Firecrawl-Origin: my-agent. Server melaporkannya ke Firecrawl sebagai asal permintaan mcp-my-agent@<server version>, menggantikan nama klien atau User-Agent yang akan dilaporkannya. Gunakan huruf, angka, dan tanda hubung: setiap rangkaian karakter lain menjadi satu tanda hubung, tanda hubung di awal dan akhir dihapus, dan nama dipotong pada 48 karakter. Hasil alat tidak terpengaruh; hanya asal yang dikirim ke API Firecrawl (dan diteruskan ke beforeKeylessRequest embedder) yang berubah.
Endpoint khusus pencarian
Permukaan pencarian dengan cakupan tetap juga dihosting di:
https://mcp.firecrawl.dev/v2/mcp-search
Ini mengekspos kumpulan tetap sembilan alat: firecrawl_search, firecrawl_developer_search, firecrawl_gov_search, empat alat firecrawl_research_*, dan dua alat Alexandria firecrawl_find_tools dan firecrawl_scrape. firecrawl_search-nya tidak mengambil konten halaman.
Menjalankan dengan npx
env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
Instalasi Manual
npm install -g firecrawl-mcp
Menjalankan di Cursor
Mengonfigurasi Cursor 🖥️ Catatan: Memerlukan Cursor versi 0.45.6+ Untuk instruksi konfigurasi terbaru, silakan merujuk ke dokumentasi resmi Cursor tentang mengonfigurasi server MCP: Panduan Konfigurasi Server MCP Cursor
Untuk mengonfigurasi Firecrawl MCP di Cursor v0.48.6
- Buka Pengaturan Cursor
- Pergi ke Features > MCP Servers
- Klik "+ Add new global MCP server"
- Masukkan kode berikut:
{ "mcpServers": { "firecrawl-mcp": { "command": "npx", "args": ["-y", "firecrawl-mcp"], "env": { "FIRECRAWL_API_KEY": "YOUR-API-KEY" } } } }
Untuk mengonfigurasi Firecrawl MCP di Cursor v0.45.6
- Buka Pengaturan Cursor
- Pergi ke Features > MCP Servers
- Klik "+ Add New MCP Server"
- Masukkan yang berikut:
- Name: "firecrawl-mcp" (atau nama pilihan Anda)
- Type: "command"
- Command:
env FIRECRAWL_API_KEY=your-api-key npx -y firecrawl-mcp
Jika Anda menggunakan Windows dan mengalami masalah, coba
cmd /c "set FIRECRAWL_API_KEY=your-api-key && npx -y firecrawl-mcp"
Ganti your-api-key dengan kunci API Firecrawl Anda. Jika Anda belum memilikinya, Anda dapat membuat akun dan mendapatkannya dari https://www.firecrawl.dev/app/api-keys
Setelah menambahkan, segarkan daftar server MCP untuk melihat alat baru. Composer Agent akan otomatis menggunakan Firecrawl MCP bila sesuai, tetapi Anda dapat memintanya secara eksplisit dengan menjelaskan apa yang Anda butuhkan dari web. Akses Composer melalui Command+L (Mac), pilih "Agent" di samping tombol kirim, dan masukkan kueri Anda.
Menjalankan di Windsurf
Tambahkan ini ke ./codeium/windsurf/model_config.json Anda:
{
"mcpServers": {
"mcp-server-firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "YOUR_API_KEY"
}
}
}
}
Menjalankan dengan Mode HTTP Streamable Lokal
Untuk menjalankan server menggunakan Streamable HTTP secara lokal alih-alih transport stdio default:
env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
Gunakan url: http://localhost:3000/mcp
Dalam mode ini server hanya menjawab permintaan yang dialamatkan ke localhost, 127.0.0.1 atau [::1] (pada port mana pun), plus alamat di HOST ketika bukan 0.0.0.0 atau ::. Permintaan yang header Host-nya menyebut host lain, atau yang header Origin-nya menyebut situs lain, mendapat 403, dan header CORS menggemakan asal yang diizinkan alih-alih *. Permintaan GET dan HEAD ke /health dijawab apa pun host-nya, sehingga pemeriksaan kesehatan tetap berfungsi, dan server mencatat satu baris yang menyebut FIRECRAWL_MCP_ALLOWED_HOSTS untuk setiap permintaan yang ditolaknya. Ini mencegah halaman web yang Anda kunjungi memanggil server lokal melalui DNS rebinding atau permintaan lintas asal dan menggunakan FIRECRAWL_API_KEY-nya.
Untuk menjangkau server dengan nama atau alamat lain, seperti hostname di balik reverse proxy atau IP LAN, cantumkan di FIRECRAWL_MCP_ALLOWED_HOSTS (dipisahkan koma; port diabaikan). Daftar yang sama menentukan asal browser mana yang boleh memanggil server. Reverse proxy di mesin yang sama dapat mempertahankan alamat bind default:
env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY \
FIRECRAWL_MCP_ALLOWED_HOSTS=mcp.home.lan npx -y firecrawl-mcp
Klien di mesin lain juga memerlukan server untuk mendengarkan pada alamat non-loopback, jadi atur HOST juga. Setiap klien yang dapat menjangkau port tersebut kemudian dilayani dengan FIRECRAWL_API_KEY milik server, jadi lakukan ini hanya pada jaringan yang Anda percayai:
env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY HOST=0.0.0.0 \
FIRECRAWL_MCP_ALLOWED_HOSTS=192.168.1.20 npx -y firecrawl-mcp
FIRECRAWL_MCP_ALLOWED_HOSTS=* mematikan pemeriksaan dan mengembalikan header CORS wildcard. Lakukan itu hanya ketika sesuatu di depan server memeriksa host dan asal itu sendiri.
Menjalankan dengan Docker
Image ghcr.io/firecrawl/firecrawl-mcp-server menjalankan server yang sama dengan npx -y firecrawl-mcp. Setiap build dari main diberi tag latest, v<package version> dan sha-<commit sha>. v<package version> berpindah ke build terbaru dari versi tersebut, jadi pin sha-<commit sha> (atau sebuah digest) ketika Anda memerlukan image yang tetap.
stdio (default), untuk klien MCP yang meluncurkan server sebagai perintah:
docker run -i --rm -e FIRECRAWL_API_KEY=fc-YOUR_API_KEY ghcr.io/firecrawl/firecrawl-mcp-server:latest
{
"mcpServers": {
"firecrawl-mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "FIRECRAWL_API_KEY", "ghcr.io/firecrawl/firecrawl-mcp-server:latest"],
"env": {
"FIRECRAWL_API_KEY": "YOUR_API_KEY"
}
}
}
}
Streamable HTTP, disajikan di http://localhost:3000/mcp:
docker run --rm -p 127.0.0.1:3000:3000 \
-e HTTP_STREAMABLE_SERVER=true \
-e FIRECRAWL_API_KEY=fc-YOUR_API_KEY \
ghcr.io/firecrawl/firecrawl-mcp-server:latest
Image menetapkan HOST=0.0.0.0 dan PORT=3000; timpa PORT (dan pemetaan -p) untuk mendengarkan di tempat lain. Server menggunakan FIRECRAWL_API_KEY milik kontainer untuk permintaan yang tidak mengirim kredensialnya sendiri, jadi contoh tersebut memublikasikan port hanya pada 127.0.0.1; jangan mengeksposnya lebih luas kecuali klien harus menyediakan kuncinya sendiri. Atur FIRECRAWL_API_URL untuk menggunakan API Firecrawl self-hosted. Kontainer berjalan sebagai pengguna node tanpa hak istimewa. Server hanya menjawab localhost, 127.0.0.1 dan [::1] di header Host dan Origin, sehingga pemetaan -p 127.0.0.1:3000:3000 berfungsi apa adanya; untuk menjangkaunya dengan nama lain, atur -e FIRECRAWL_MCP_ALLOWED_HOSTS=<host> (lihat Mode HTTP Streamable lokal).
Menjalankan di VS Code
Untuk instalasi sekali klik, klik salah satu tombol instalasi di bawah ini...
Untuk instalasi manual, tambahkan blok JSON berikut ke file User Settings (JSON) Anda di VS Code. Anda dapat melakukannya dengan menekan Ctrl + Shift + P dan mengetik Preferences: Open User Settings (JSON).
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "apiKey",
"description": "Firecrawl API Key",
"password": true
}
],
"servers": {
"firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "${input:apiKey}"
}
}
}
}
}
Secara opsional, Anda dapat menambahkannya ke file bernama .vscode/mcp.json di workspace Anda. Ini akan memungkinkan Anda berbagi konfigurasi dengan orang lain:
{
"inputs": [
{
"type": "promptString",
"id": "apiKey",
"description": "Firecrawl API Key",
"password": true
}
],
"servers": {
"firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "${input:apiKey}"
}
}
}
}
Konfigurasi
Variabel Lingkungan
Diperlukan untuk Cloud API
FIRECRAWL_API_KEY: Kunci API Firecrawl Anda- Diperlukan saat menggunakan cloud API (default)
- Opsional saat menggunakan instans self-hosted dengan
FIRECRAWL_API_URL
FIRECRAWL_API_URL(Opsional): Endpoint API kustom untuk instans self-hosted- Contoh:
https://firecrawl.your-domain.com - Jika tidak diberikan, cloud API akan digunakan (memerlukan kunci API)
- Contoh:
FIRECRAWL_INTEGRATION(Opsional): Tag integrasi untuk aplikasi yang meluncurkan server ini, seperti ekstensi editor- Dikirim sebagai bidang
integrationdari permintaan scrape, batch scrape, crawl, map, search, extract, agent, parse, interact dan feedback - Gunakan nilai yang dimulai dengan
_, misalnya_zed
- Dikirim sebagai bidang
Mode HTTP lokal
FIRECRAWL_MCP_ALLOWED_HOSTS(Opsional): Nama host atau alamat tambahan yang dijawab server denganHTTP_STREAMABLE_SERVER=trueatauSSE_LOCAL=true, dipisahkan komalocalhost,127.0.0.1,[::1]danHOSTnon-wildcard selalu diizinkan; port diabaikan- Permintaan yang header
HostatauOrigin-nya menyebut host lain akan mendapat403, kecuali permintaanGETdanHEADke/health *mematikan pemeriksaan; tidak digunakan bersamaCLOUD_SERVICE=true, yang menjawab semua host
MCP OAuth (token akses Bearer)
Firecrawl menerbitkan token akses OAuth (fco_…) melalui server otorisasi di firecrawl.dev. Server MCP ini meneruskan kredensial apa pun yang berhasil diresolusinya ke Firecrawl API sebagai Authorization: Bearer ….
- Transport HTTP stream (
CLOUD_SERVICE=true,HTTP_STREAMABLE_SERVER=true, atauSSE_LOCAL=true): Klien harus mengirimAuthorization: Bearer <fco_access_token>pada permintaan MCP. Token bearer OAuth diprioritaskan di atasx-firecrawl-api-key/x-api-keybila keduanya ada. - stdio: Gunakan
FIRECRAWL_OAUTH_TOKENuntuk token akses statis, atau tetap gunakanFIRECRAWL_API_KEYuntuk API key.
Gunakan hanya token akses (fco_…). Token refresh (fcr_…) harus ditukar di endpoint token, bukan diteruskan ke API scrape/search.
CLOUD_SERVICE=true
CLOUD_SERVICE=true menyajikan tool melalui streamable HTTP di PORT (default 3000, terikat ke 0.0.0.0) dengan default yang lebih ketat: setiap permintaan harus membawa kredensial (API key atau token akses OAuth), scrape bersifat read-only (lihat tool scrape di bawah), dan firecrawl_parse hanya menerima unggahan.
FASTMCP_ENDPOINT memilih permukaan tool: /v2/mcp (default) untuk set tool lengkap, /v2/mcp-oauth untuk permukaan akun, atau /v2/mcp-search untuk tool khusus pencarian (ini juga memerlukan FIRECRAWL_MCP_SEARCH_OAUTH_ONLY=true). Dengan permukaan lengkap, instans khusus pencarian juga dimulai pada port 3001; setel FIRECRAWL_MCP_SEARCH_ENABLED=false untuk mematikannya.
Contoh Konfigurasi
Untuk penggunaan API cloud:
export FIRECRAWL_API_KEY=your-api-key
Untuk instans self-hosted:
# Required for self-hosted
export FIRECRAWL_API_URL=https://firecrawl.your-domain.com
# Optional authentication for self-hosted
export FIRECRAWL_API_KEY=your-api-key # If your instance requires auth
Penggunaan dengan Claude Desktop
Tambahkan ini ke claude_desktop_config.json Anda:
{
"mcpServers": {
"mcp-server-firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
Cara Memilih Tool
Gunakan panduan ini untuk memilih tool yang tepat untuk tugas Anda:
- Jika Anda tahu URL persis yang diinginkan: gunakan scrape (dengan format JSON untuk data terstruktur)
- Jika Anda memiliki beberapa URL yang diketahui: panggil scrape untuk setiap URL. Jika Anda secara khusus memerlukan satu operasi API bulk, gunakan endpoint batch Firecrawl API di luar MCP.
- Jika Anda perlu menemukan URL di sebuah situs: gunakan map
- Jika Anda ingin mencari informasi di web: gunakan search
- Jika Anda memiliki pertanyaan pemrograman (sebuah library, kontrak API, pesan error, bug yang diketahui): gunakan developer search
- Jika Anda memiliki pertanyaan hukum atau regulasi (statuta, peraturan, kode, opini pengadilan, atau publikasi pemerintah AS lainnya): gunakan Firecrawl Government Index
- Jika Anda memerlukan makalah ilmiah (biomedis, ilmu hayati, klinis, atau literatur arXiv): gunakan research tools, yang mencari abstrak dan teks lengkap makalah.
searchdengancategories: ["research"]adalah hal yang berbeda: filter situs web atas hasil web biasa. - Jika Anda memerlukan riset multi-sumber yang mengembalikan data terstruktur, tidak tahu URL-nya, atau jawabannya mencakup beberapa situs (entitas beserta field-nya, daftar, dataset): gunakan agent
- Jika Anda ingin menganalisis seluruh situs atau bagiannya: gunakan crawl (dengan batasan!)
- Jika Anda memerlukan otomasi browser interaktif (klik, ketik, navigasi): gunakan interact dengan URL untuk halaman baru, atau scrape + interact bila Anda sudah melakukan scrape halaman tersebut atau memerlukan kontrol scrape yang lebih ketat
- Jika Anda memerlukan data dari penyedia yang terkatalog (Alexandria): cari dengan
sources: ["alexandria"], periksa kontrak yang dipilih dengan find_tools, dan eksekusi dengan scrapealexandria
Tabel Referensi Cepat
| Tool | Paling cocok untuk | Mengembalikan |
|---|---|---|
| scrape | Konten satu halaman | JSON (disarankan) atau markdown |
| interact | Berinteraksi dengan URL atau halaman hasil scrape | Hasil eksekusi + scrapeId untuk mode URL |
| map | Menemukan URL di sebuah situs | URL[] |
| crawl | Ekstraksi multi-halaman (dengan batasan) | status/data crawl final setelah polling internal |
| parse | File dan referensi unggahan terhosting | markdown, JSON, atau output dokumen |
| search | Pencarian web untuk informasi | results[] |
| find_tools | Penjelajahan katalog Alexandria dan pencarian URL | provider, kontrak tool, dan navigasi nextTool |
| developer | Pertanyaan pemrograman atas sumber developer | results[] dengan passage |
| gov | Hukum primer dan materi regulasi AS | results[] dengan snippet |
| agent | Riset multi-sumber, situs tidak diketahui atau banyak | JSON (data terstruktur) |
| monitor | Pemeriksaan halaman berulang | metadata dan diff monitor/check |
| research | Riset makalah dan repositori GitHub | hasil riset dan kecocokan repo |
Panduan Pemilihan Format
Saat menggunakan scrape, pilih format yang tepat:
- Format JSON (disarankan untuk sebagian besar kasus): Gunakan saat Anda memerlukan data spesifik dari sebuah halaman. Definisikan skema berdasarkan apa yang perlu Anda ekstrak. Ini menjaga respons tetap kecil dan menghindari luapan context window.
- Format markdown (gunakan secukupnya): Hanya saat Anda benar-benar memerlukan konten halaman lengkap, seperti membaca seluruh artikel untuk diringkas atau menganalisis struktur halaman.
Tool yang Tersedia
1. Tool Scrape (firecrawl_scrape)
Scrape konten dari satu URL dengan opsi lanjutan.
Paling cocok untuk:
- Ekstraksi konten satu halaman, saat Anda tahu persis halaman mana yang berisi informasi tersebut.
Tidak disarankan untuk:
- Mengekstrak konten dari beberapa halaman (gunakan panggilan scrape berulang untuk URL yang diketahui, atau map + scrape untuk menemukan URL terlebih dahulu, atau crawl untuk konten halaman lengkap)
- Saat Anda tidak yakin halaman mana yang berisi informasi tersebut (gunakan search)
Kesalahan umum:
- Meneruskan daftar URL ke satu panggilan scrape. Panggil scrape sekali per URL di MCP. Jika Anda secara khusus memerlukan satu operasi API bulk, gunakan endpoint batch Firecrawl API di luar MCP.
- Menggunakan format markdown secara default (gunakan format JSON untuk mengekstrak hanya yang Anda butuhkan).
Memilih format yang tepat:
- Format JSON (disarankan): Untuk sebagian besar kasus penggunaan, gunakan format JSON dengan skema untuk mengekstrak hanya data spesifik yang dibutuhkan. Ini menjaga respons tetap fokus dan mencegah luapan context window.
- Format markdown: Hanya saat tugas benar-benar memerlukan konten halaman lengkap (misalnya, meringkas seluruh artikel, menganalisis struktur halaman).
Contoh Prompt:
"Ambil detail produk dari https://example.com/product."
Contoh Penggunaan (format JSON - disarankan):
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com/product",
"formats": [
{
"type": "json",
"prompt": "Extract the product information",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"price": { "type": "number" },
"description": { "type": "string" }
},
"required": ["name", "price"]
}
}
]
}
}
Contoh Penggunaan (format markdown - saat konten lengkap dibutuhkan):
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com/article",
"formats": ["markdown"],
"onlyMainContent": true
}
}
Contoh Penggunaan (format branding - ekstrak identitas merek):
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com",
"formats": ["branding"]
}
}
Format branding: Mengekstrak identitas merek yang komprehensif (warna, font, tipografi, spasi, logo, komponen UI) untuk analisis desain atau replikasi gaya.
Privasi: Setel redactPII: true untuk mengembalikan konten dengan informasi identitas pribadi yang disunting.
Dengan CLOUD_SERVICE=true: scrape bersifat read-only. Ini tidak mengambil actions browser dan tidak dapat menerima ketentuan penyedia. profile bernama memuat state browser tersimpan tanpa menyimpan perubahan padanya, dan firecrawl_search pada endpoint lengkap memperlakukan scrapeOptions.profile dengan cara yang sama. Untuk menyimpan state browser ke profil, buka halaman dengan firecrawl_interact (lihat di bawah). Admin organisasi menerima ketentuan di dashboard.
Mengembalikan:
- Data terstruktur JSON, markdown, profil branding, atau format lain sesuai yang ditentukan.
2. Tool Map (firecrawl_map)
Memetakan situs web untuk menemukan semua URL terindeks di situs tersebut.
Paling cocok untuk:
- Menemukan URL di situs web sebelum memutuskan apa yang akan di-scrape
- Menemukan bagian spesifik dari situs web
Tidak disarankan untuk:
- Saat Anda sudah tahu URL spesifik yang Anda butuhkan (gunakan scrape)
- Saat Anda memerlukan konten halaman tersebut (gunakan scrape setelah mapping)
Kesalahan umum:
- Menggunakan crawl untuk menemukan URL alih-alih map
Contoh Prompt:
"Daftar semua URL di example.com."
Contoh Penggunaan:
{
"name": "firecrawl_map",
"arguments": {
"url": "https://example.com"
}
}
Mengembalikan:
- Array URL yang ditemukan di situs
3. Tool Search (firecrawl_search)
Cari di web dan secara opsional ekstrak konten dari hasil pencarian.
Paling cocok untuk:
- Menemukan informasi spesifik di beberapa situs web, saat Anda tidak tahu situs web mana yang memiliki informasi tersebut.
- Saat Anda memerlukan konten paling relevan untuk sebuah kueri
Tidak disarankan untuk:
- Saat Anda sudah tahu situs web mana yang akan di-scrape (gunakan scrape)
- Saat Anda memerlukan cakupan komprehensif dari satu situs web (gunakan map atau crawl)
Kesalahan umum:
- Menggunakan crawl atau map untuk pertanyaan terbuka (gunakan search sebagai gantinya)
Contoh Penggunaan:
{
"name": "firecrawl_search",
"arguments": {
"query": "remote work stipend policies at tech companies",
"highlights": true,
"limit": 5,
"lang": "en",
"country": "us"
}
}
Untuk mendapatkan teks lengkap dari beberapa hasil dalam panggilan yang sama, tambahkan "scrapeOptions": { "formats": ["markdown"], "onlyMainContent": true }. Setiap hasil yang diambil ditagih sebagai scrape, jadi untuk sebagian besar pertanyaan gunakan kutipan dan firecrawl_scrape hanya URL yang Anda butuhkan.
Setel highlights ke true untuk meminta sorotan yang relevan dengan kueri atau false untuk mempertahankan snippet pencarian asli. Hilangkan untuk menggunakan perilaku default API.
Tambahkan "sources": ["alexandria"] untuk penemuan tool semantik di data.tools, opsional dicampur dengan web/news/images. Kueri wajib diisi. Gunakan firecrawl_find_tools untuk pencarian kontekstual dan pengungkapan progresif; lihat Alexandria Tools.
Untuk makalah ilmiah, lihat Research Tools: tool tersebut mencari abstrak dan teks lengkap makalah, sedangkan categories: ["research"] di sini memfilter hasil web biasa ke situs web yang berafiliasi dengan riset.
Mengembalikan:
- Hasil pencarian yang dikelompokkan berdasarkan sumber (
data.web,data.images,data.news), dengan konten hasil scrape opsional, plus fieldid. Setiap hasil membawasourcedanpositionberindeks-1, dinomori dari 1 dalam grupnya sendiri — salin pasangan tersebut langsung kevaluableResultsmilikfirecrawl_search_feedbackalih-alih menghitung elemen array. Teruskanidtersebut kefirecrawl_search_feedbacksetelah Anda menggunakan hasilnya untuk mengembalikan 1 kredit (pencarian berbiaya 2) dan meningkatkan kualitas pencarian.
Contoh Prompt:
"Bandingkan kebijakan tunjangan kerja jarak jauh di berbagai perusahaan teknologi."
3b. Tool Umpan Balik Pencarian (firecrawl_search_feedback)
Mengirim umpan balik terstruktur atas hasil firecrawl_search sebelumnya. Umpan balik pertama per id pencarian mengembalikan 1 kredit dan meningkatkan kualitas pencarian Firecrawl. Idempoten per id pencarian.
Panggil ini setelah setiap pencarian yang benar-benar Anda gunakan (atau yang tidak membantu). Umpan balik buruk/sebagian dengan missingContent sama berharganya dengan umpan balik baik.
Berhenti berlangganan: setel FIRECRAWL_NO_SEARCH_FEEDBACK=1 (atau FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1) di environment saat memulai server MCP. Tool firecrawl_search_feedback tidak akan didaftarkan, sehingga agen tidak dapat memanggilnya. Admin tim juga dapat menonaktifkan umpan balik di sisi server; dalam hal ini, tool tetap didaftarkan tetapi selalu mengembalikan feedbackErrorCode: "TEAM_OPTED_OUT".
Bidang terpenting: missingContent. Ini adalah array berisi potongan konten spesifik yang diharapkan ditemukan oleh agen tetapi tidak ditemukan. Satu entri per topik yang hilang; entri ini diagregasi lintas tim dan memberi tahu kami apa yang perlu diindeks berikutnya. Untuk hasil yang berguna, gunakan valuableResults dengan pasangan source/position yang dicap pada setiap hasil — hasil dikelompokkan dan setiap grup diberi nomor mulai dari 1 secara independen, jadi keduanya diperlukan. Cantumkan setiap hasil yang berguna (hasil yang tidak dicantumkan dianggap tidak berguna), dan sisihkan valuableSources untuk URL berguna yang tidak termasuk dalam hasil yang dikembalikan.
Batas pengembalian dana harian (per tim, per hari UTC, default 100 kredit). Setelah creditsRefundedToday sebuah tim mencapai dailyRefundCap, pengiriman berikutnya tetap mencatat umpan balik tetapi tidak lagi mengembalikan kredit. Respons menetapkan dailyCapReached: true. Agen harus berhenti memanggil alat ini selama sisa hari UTC ketika melihat flag tersebut.
Contoh Penggunaan:
{
"name": "firecrawl_search_feedback",
"arguments": {
"searchId": "0193f6c5-1234-7890-abcd-1234567890ab",
"rating": "good",
"valuableResults": [
{ "source": "web", "position": 1 },
{ "source": "web", "position": 3 },
{ "source": "news", "position": 2, "reason": "Broke the pricing change." }
],
"valuableSources": [
{
"url": "https://docs.firecrawl.dev/pricing",
"reason": "Not in the results; found via a result's pricing link. Answered the question."
}
],
"missingContent": [
{
"topic": "Pricing for the search endpoint",
"description": "No pricing tier table for /search specifically."
},
{ "topic": "Per-team rate limits" }
],
"querySuggestions": "Boost docs.firecrawl.dev for queries that mention 'firecrawl'"
}
}
Mengembalikan:
{ success, feedbackId, creditsRefunded, alreadySubmitted? }JSON.
3c. Alat Umpan Balik Generik (firecrawl_feedback)
Mengirim umpan balik terstruktur untuk pekerjaan endpoint v2 yang telah selesai melalui /v2/feedback.
Gunakan ini untuk umpan balik tingkat endpoint pada pekerjaan scrape, parse, map, atau search.
Untuk kualitas hasil pencarian secara khusus, utamakan
firecrawl_search_feedback karena menyertakan panduan khusus pencarian.
Jaga umpan balik tetap ringkas: gunakan kode masalah, tag, catatan singkat, URL, nomor halaman, dan objek metadata kecil. Jangan sertakan keluaran scrape/parse mentah.
Opt out: setel FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 (atau FIRECRAWL_DISABLE_ENDPOINT_FEEDBACK=1) di lingkungan saat memulai server MCP. Alat firecrawl_feedback tidak akan didaftarkan, sehingga agen tidak dapat memanggilnya.
Contoh Penggunaan:
{
"name": "firecrawl_feedback",
"arguments": {
"endpoint": "scrape",
"jobId": "0193f6c5-1234-7890-abcd-1234567890ab",
"rating": "partial",
"issues": ["missing_markdown"],
"tags": ["docs"],
"note": "The pricing table was missing from the markdown output.",
"url": "https://example.com/pricing",
"pageNumbers": [1],
"metadata": {
"format": "markdown"
}
}
}
Mengembalikan:
{ success, feedbackId, creditsRefunded, creditsRefundedToday?, dailyRefundCap?, dailyCapReached?, websiteCapReached?, alreadySubmitted?, warning? }JSON.
4. Alat Crawl (firecrawl_crawl)
Memulai pekerjaan crawl, melakukan polling hingga mencapai status terminal, dan mengembalikan status/data crawl akhir.
Terbaik untuk:
- Mengekstrak konten dari beberapa halaman terkait, ketika Anda memerlukan cakupan yang komprehensif.
Tidak disarankan untuk:
- Mengekstrak konten dari satu halaman (gunakan scrape)
- Ketika batas token menjadi perhatian (gunakan map + scrape untuk kontrol yang lebih ketat)
- Ketika Anda memerlukan hasil cepat (crawling bisa lambat)
Peringatan: Respons crawl bisa sangat besar dan dapat melebihi batas token. Batasi kedalaman crawl dan jumlah halaman, atau gunakan map + scrape untuk kontrol yang lebih ketat.
Kesalahan umum:
- Menetapkan limit atau maxDiscoveryDepth terlalu tinggi (menyebabkan luapan token)
- Menggunakan crawl untuk satu halaman (gunakan scrape sebagai gantinya)
Contoh Prompt:
"Ambil semua posting blog dari dua level pertama example.com/blog."
Contoh Penggunaan:
{
"name": "firecrawl_crawl",
"arguments": {
"url": "https://example.com/blog/*",
"maxDiscoveryDepth": 2,
"limit": 100,
"allowExternalLinks": false,
"deduplicateSimilarURLs": true
}
}
Mengembalikan:
- Status dan data crawl akhir setelah polling internal, termasuk
id,status,completed,total,creditsUsed,expiresAt,next, dandata. Gunakanidyang dikembalikan denganfirecrawl_check_crawl_statusjika Anda perlu memeriksa ulang pekerjaan nanti.
5. Periksa Status Crawl (firecrawl_check_crawl_status)
Periksa status dan hasil pekerjaan crawl yang ada berdasarkan ID.
{
"name": "firecrawl_check_crawl_status",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}
Mengembalikan:
- Respons menyertakan status pekerjaan crawl:
6. Alat Parse (firecrawl_parse)
Mengurai file lokal atau referensi unggahan yang dihosting dengan endpoint /v2/parse Firecrawl.
Terbaik untuk: PDF, dokumen Word, spreadsheet, file HTML, dan dokumen lain yang memerlukan keluaran markdown atau JSON terstruktur. Endpoint yang dihosting menggunakan alur unggah dua langkah; pembacaan file langsung lokal memerlukan FIRECRAWL_API_URL yang dihosting sendiri.
Tidak disarankan untuk: URL jarak jauh (gunakan scrape), beberapa file dalam satu panggilan (panggil parse sekali per file), atau tindakan khusus browser seperti tangkapan layar dan klik.
Endpoint yang dihosting: tidak dapat membaca sistem file Anda. Panggil firecrawl_parse dengan filePath untuk menerima perintah unggah berumur pendek dan nextToolCall, unggah file secara lokal, lalu panggil firecrawl_parse lagi dengan uploadRef yang dikembalikan. Langkah unggah memerlukan autentikasi Firecrawl atau tier tanpa kunci. Dalam mode npx firecrawl-mcp lokal, penguraian file langsung saat ini memerlukan FIRECRAWL_API_URL yang menunjuk ke API Firecrawl yang dihosting sendiri; server lokal biasa yang hanya memiliki kunci API cloud tidak dapat membaca dan mengunggah file melalui alat ini.
Contoh Penggunaan:
{
"name": "firecrawl_parse",
"arguments": {
"filePath": "/absolute/path/to/document.pdf",
"formats": ["markdown"],
"parsers": ["pdf"],
"zeroDataRetention": true
}
}
Mengembalikan: Konten dokumen yang diurai atau instruksi unggahan yang dihosting dengan nextToolCall.
7. Data terstruktur dengan Scrape JSON
Untuk data terstruktur dari halaman yang diketahui, panggil firecrawl_scrape sekali per URL dengan formats: ["json"]. Letakkan prompt ekstraksi dan skema JSON di jsonOptions.
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com/product",
"formats": ["json"],
"jsonOptions": {
"prompt": "Extract the product name, price, and description.",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"price": { "type": "number" },
"description": { "type": "string" }
},
"required": ["name", "price"]
}
}
}
}
Ketika URL tidak diketahui atau data mencakup beberapa situs, gunakan firecrawl_agent untuk riset multi-sumber.
8. Alat Agent (firecrawl_agent)
Agen riset web otonom yang mengembalikan data terstruktur ketika Anda tidak mengetahui URL atau jawabannya mencakup beberapa situs. Jelaskan bidang yang Anda butuhkan, secara opsional berikan skema JSON dan URL benih, dan agen akan mencari, menavigasi, membaca halaman, dan mengembalikan JSON yang dirakit dari berbagai sumber. Gunakan untuk entitas beserta bidang-bidangnya, untuk daftar dan kumpulan data, dan untuk halaman yang memerlukan navigasi untuk mencapai data. Untuk satu URL yang diketahui, gunakan firecrawl_scrape dengan format JSON sebagai gantinya.
Cara kerjanya:
Agen melakukan pencarian web, mengikuti tautan, membaca halaman, dan mengumpulkan data secara otonom. Ini berjalan secara asinkron - agen langsung mengembalikan ID pekerjaan, dan Anda melakukan polling firecrawl_agent_status untuk memeriksa kapan selesai dan mengambil hasil.
Alur kerja asinkron:
- Panggil
firecrawl_agentdengan prompt/skema Anda → mengembalikan ID pekerjaan - Lakukan pekerjaan lain sementara agen melakukan riset (bisa memakan waktu beberapa menit untuk kueri kompleks)
- Lakukan polling
firecrawl_agent_statusdengan ID pekerjaan untuk memeriksa kemajuan - Ketika status "completed", respons menyertakan data yang diekstrak
Terbaik untuk:
- Tugas riset kompleks di mana Anda tidak mengetahui URL persisnya
- Pengumpulan data multi-sumber
- Menemukan informasi yang tersebar di seluruh web
- Tugas di mana Anda dapat melakukan pekerjaan lain sambil menunggu hasil
Tidak disarankan untuk:
- Scraping satu halaman sederhana di mana Anda mengetahui URL-nya (gunakan scrape dengan format JSON - lebih cepat dan lebih murah)
Argumen:
prompt: Deskripsi bahasa alami tentang data yang Anda inginkan (wajib, maks 10.000 karakter)urls: Array URL opsional untuk memfokuskan agen pada halaman tertentuschema: Skema JSON opsional untuk keluaran terstruktureffort: Opsional. Anggaran penalaran"low","medium"atau"high"untuk tugas agen.maxCredits: Bilangan bulat positif opsional. Batas pengeluaran dalam kredit untuk proses ini. API default ke 2.500 jika dihilangkan, dan membatasi permintaan gratis pada 2.500.strictConstrainToURLs: Boolean opsional. Jikatrue, agen hanya mengunjungi URL diurls.threadId: Opsional. Lanjutkan thread yang ada:threadIddari hasilfirecrawl_agentataufirecrawl_agent_statussebelumnya. Hilangkan untuk memulai thread baru. Pada tindak lanjut, pengaturanmode,urls,schemadanexchangeyang dihilangkan akan diwarisi dari giliran sebelumnya.mode: Opsional."extract"(default) mengembalikan hasil terstruktur lengkap setiap giliran."chat"memungkinkan tindak lanjut yang tidak meminta data baru mendapatkan balasan singkat dimessagealih-alih menjalankan ulang;exchange.requireApprovalmemerlukannya.exchange: Opsional. Pengaturan penyedia Alexandria untuk giliran ini, diteruskan apa adanya kePOST /v2/agent:enabled,toolkits(hingga 5 slug penyedia),maxCalls(1 hingga 30),requireApproval(panggilan berbayar mengakhiri giliran denganpendingApproval; memerlukanmode: "chat"pada panggilan yang sama, bahkan pada tindak lanjut)onTermsRequired: apa yang harus dilakukan ketika penyedia Alexandria yang akan digunakan agen memerlukan persyaratan data yang belum disetujui tim Anda. Penyedia yang dibatasi tidak pernah dipanggil dalam mode apa pun. Jika dihilangkan pada tindak lanjut, nilai giliran sebelumnya akan dipertahankan."skip"(default): jawab hanya dengan penyedia yang disetujui.exchange.skippedProviderspada hasil status mencantumkan penyedia yang dibatasi yang seharusnya membantu."ask": sama, ditambah persyaratanpendingApprovaldanexchange.requiresActiondengan ID persetujuan dan persyaratan penyedia. Baca persyaratan denganterms/show; admin organisasi menyetujuinya di dasbor Firecrawl.
approve:{ approvalId, callIds?, always? }menjawab ya untukpendingApprovalyang mengakhiri giliran sebelumnya.callIdsdanalwayshanya berlaku untuk persetujuan panggilan berbayar.decline:{ approvalId }menjawab tidak. Tawaran persyaratan yang ditolak membuat penyedia tersebut tetap di luar sisa thread.approvedandeclinememerlukanthreadId, dan hanya salah satunya yang dapat dikirim.
Persyaratan penyedia (mode tanya): tidak ada mode penerimaan otomatis. Ketika sebuah giliran berakhir pada tawaran persyaratan, hasil status membawa pendingApproval (kind: "terms") dan exchange.requiresAction dengan approvalId dan persyaratan penyedia. Deskriptor terms/accept apa pun dalam payload API tersebut tidak tersedia melalui MCP. Untuk menggunakan penyedia:
- Tunjukkan persyaratan kepada pengguna (
terms/showhinggafirecrawl_scrapedenganalexandria). - Arahkan admin organisasi untuk menyetujui persyaratan di URL penyedia, atau pengaturan sumber data. Permintaan data bukanlah persetujuan.
- Tunggu admin mengonfirmasi penerimaan di dasbor.
- Lanjutkan thread yang sama: panggil
firecrawl_agentdenganthreadIddanexchange.approve: { "approvalId": "..." }yang sama. Ini melanjutkan riset dan tidak menyetujui persyaratan.
Jika pengguna mengatakan tidak, panggil firecrawl_agent dengan threadId dan exchange.decline: { "approvalId": "..." } yang sama sebagai gantinya.
Contoh Prompt:
"Temukan para pendiri Firecrawl dan latar belakang mereka"
Contoh Penggunaan (mulai agen, lalu polling hasil):
{
"name": "firecrawl_agent",
"arguments": {
"prompt": "Find the top 5 AI startups founded in 2024 and their funding amounts",
"schema": {
"type": "object",
"properties": {
"startups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"funding": { "type": "string" },
"founded": { "type": "string" }
}
}
}
}
}
}
}
Kemudian lakukan polling dengan firecrawl_agent_status menggunakan ID pekerjaan yang dikembalikan.
Contoh Penggunaan (dengan URL - agen berfokus pada halaman tertentu):
{
"name": "firecrawl_agent",
"arguments": {
"urls": ["https://docs.firecrawl.dev", "https://firecrawl.dev/pricing"],
"prompt": "Compare the features and pricing information from these pages"
}
}
Contoh Penggunaan (tindak lanjut pada thread yang sama):
{
"name": "firecrawl_agent",
"arguments": {
"prompt": "Only keep the startups based in Europe",
"threadId": "0199a1b2-0000-7000-8000-000000000031"
}
}
Contoh Penggunaan (lanjutkan thread setelah admin mengonfirmasi penerimaan di dasbor):
{
"name": "firecrawl_agent",
"arguments": {
"prompt": "The admin confirmed acceptance of the Apollo terms in the dashboard. Continue.",
"threadId": "0199a1b2-0000-7000-8000-000000000031",
"exchange": { "approve": { "approvalId": "0199a1b2-0000-7000-8000-000000000033" } }
}
}
Mengembalikan:
- ID pekerjaan untuk pemeriksaan status, ditambah
threadIddanthreadTurn. Gunakanfirecrawl_agent_statusuntuk polling hasil.
9. Periksa Status Agent (firecrawl_agent_status)
Periksa status pekerjaan agen dan ambil hasil ketika selesai. Gunakan ini untuk polling hasil setelah memulai agen.
Pola polling: Riset agen dapat memakan waktu beberapa menit untuk kueri kompleks. Lakukan polling endpoint ini secara berkala (misalnya, setiap 10-30 detik) hingga status "completed" atau "failed".
{
"name": "firecrawl_agent_status",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}
Status yang mungkin:
processing: Agen masih melakukan riset - periksa lagi nanticompleted: Riset selesai - respons menyertakan data yang diekstrakfailed: Terjadi kesalahan
10. Alat Interact (firecrawl_interact)
Berinteraksi dengan URL baru atau dengan halaman yang sudah dibuka oleh firecrawl_scrape.
Terbaik untuk: Mengklik, mengetik, menavigasi, dan mengekstrak status dari halaman dinamis tanpa memulihkan alat browser yang sudah usang.
Opsi penggunaan:
- Berikan
urluntuk scrape dan membuka halaman untuk interaksi dalam satu panggilan MCP. - Berikan
scrapeIduntuk melanjutkan interaksi dengan halaman yang sudah di-scrape. - Untuk menyimpan status browser (cookie, localStorage) ke profil bernama, berikan
urldenganscrapeOptions: { "profile": { "name": "my-profile", "saveChanges": true } }. Status disimpan ketikafirecrawl_interact_stopmengakhiri sesi. - Berikan tepat satu dari
urlatauscrapeId, ditambah salah satu daripromptataucode.
Contoh Penggunaan:
{
"name": "firecrawl_interact",
"arguments": {
"url": "https://example.com",
"prompt": "Click the pricing link and summarize the visible plans"
}
}
Mengembalikan: Hasil interaksi dan, untuk mode URL, scrapeId yang diturunkan untuk tindak lanjut atau pembersihan.
11. Alat Stop Interact (firecrawl_interact_stop)
Hentikan sesi interaksi untuk halaman yang di-scrape ketika Anda selesai berinteraksi.
{
"name": "firecrawl_interact_stop",
"arguments": {
"scrapeId": "scrape-id-here"
}
}
12. Alat Riset (firecrawl_research_*)
Cari dan periksa makalah serta repositori GitHub melalui alat MCP riset.
Mencakup: abstrak dan teks lengkap makalah di seluruh literatur biomedis, ilmu hayati, dan klinis (PubMed, bioRxiv, medRxiv) bersama arXiv dan sumber ilmiah lainnya.
Alat riset yang tersedia:
firecrawl_research_search_papers: cari metadata dan abstrak makalah dengan kueri bahasa alami, dengan filter penulis, kategori, dan tanggal opsional.firecrawl_research_inspect_paper: ambil metadata kanonis untuk satu ID makalah (arXiv, PMC, PMID, atau DOI).firecrawl_research_related_papers: perluas dari satu atau beberapa makalah jangkar melalui graf sitasi.firecrawl_research_read_paper: baca bagian teks lengkap dari makalah tertentu.
Paling cocok untuk: Tinjauan literatur, pencarian makalah, dan alur kerja penemuan repositori di mana agen membutuhkan permukaan riset yang terfokus alih-alih pencarian web umum.
firecrawl_search dengan categories: ["research"] adalah permukaan yang berbeda: ia memfilter hasil web biasa ke situs web berafiliasi riset dan mengembalikan cuplikan halaman, bukan catatan makalah. Gunakan alat ini ketika pertanyaan menyangkut literatur itu sendiri, dan berikan beberapa perumusan berbeda dari pertanyaan yang sama, karena alat ini memunculkan makalah yang berbeda dibandingkan kueri tunggal.
13. Alat Monitor (firecrawl_monitor_*)
Buat dan kelola monitor halaman berulang. Monitor menjalankan scrape atau crawl terjadwal, membandingkan setiap hasil dengan snapshot terakhir yang disimpan, dan dapat memberi notifikasi melalui webhook atau email.
Paling cocok untuk:
- Memantau satu halaman atau beberapa halaman dari waktu ke waktu
- Memberi peringatan atas perubahan bermakna menggunakan tujuan berbahasa sederhana
- Melacak riwayat pemeriksaan dan diff tingkat halaman
Pola pembuatan yang direkomendasikan:
Gunakan page atau pages plus goal. Server MCP membangun permintaan monitor dengan jadwal 30 menit dan API mengaktifkan penilaian perubahan bermakna secara otomatis.
Penilaian perubahan bermakna berjalan otomatis ketika goal diatur. Webhook halaman mengekspos isMeaningful dan judgment pada peristiwa monitor.page.
Tulis tujuan sebagai instruksi monitor yang ringkas, 2-3 kalimat. Nyatakan apa yang harus memicu peringatan, pertahankan cakupan apa pun yang diberikan pengguna, dan sertakan pengecualian khusus maksud hanya bila jelas dari permintaan. Gangguan generik seperti spasi, perubahan format saja, ID permintaan, parameter pelacakan, metadata generik, dan elemen halaman yang tidak relevan sudah ditangani oleh penilai, jadi jangan mengulanginya di setiap tujuan. Jika pengguna tidak spesifik, biarkan tujuan tetap luas; jika mereka meminta pemantauan luas atau "perubahan apa pun", pertahankan itu. Jika pengguna mengatakan mereka tidak peduli tentang sesuatu, sertakan secara eksplisit.
{
"name": "firecrawl_monitor_create",
"arguments": {
"page": "https://example.com/pricing",
"goal": "Alert when pricing, packaging, or launch messaging changes."
}
}
Beberapa halaman dengan webhook:
{
"name": "firecrawl_monitor_create",
"arguments": {
"pages": ["https://example.com/pricing", "https://example.com/changelog"],
"goal": "Alert when pricing, packaging, or launch messaging changes.",
"webhookUrl": "https://example.com/webhooks/firecrawl"
}
}
Permintaan pembuatan lanjutan:
Berikan body ketika Anda membutuhkan target crawl, pelacakan perubahan JSON, retensi kustom, atau kontrol judgeEnabled eksplisit.
{
"name": "firecrawl_monitor_create",
"arguments": {
"body": {
"name": "Docs monitor",
"schedule": { "text": "hourly", "timezone": "UTC" },
"goal": "Alert when docs pages add, remove, or materially change API behavior.",
"targets": [{ "type": "crawl", "url": "https://example.com/docs" }]
}
}
}
Alat monitor lainnya:
firecrawl_monitor_list: daftar monitor.firecrawl_monitor_get: dapatkan satu monitor.firecrawl_monitor_update: perbarui bidang termasukgoal,judgeEnabled,webhook, dannotification.firecrawl_monitor_run: picu pemeriksaan sekarang.firecrawl_monitor_delete: hapus monitor (destruktif; panggil hanya ketika pengguna bermaksud menghapusnya).firecrawl_monitor_checks: daftar pemeriksaan, opsional difilter berdasarkan status.firecrawl_monitor_check: dapatkan hasil tingkat halaman, termasukdiff,snapshot,judgment.meaningful, danjudgment.meaningfulChanges.
14. Alat Pencarian Pengembang (firecrawl_developer_search)
Cari indeks yang dibangun untuk agen pengkodean. Indeks mencakup issue GitHub, pull request yang di-merge, README repositori, dan dokumentasi kode.
Paling cocok untuk: Pertanyaan pemrograman: perilaku kode, pustaka atau framework, kontrak API, pesan kesalahan, atau bug yang diketahui.
Argumen:
{
"name": "firecrawl_developer_search",
"arguments": {
"query": "how do I configure retries",
"k": 10,
"skills": "only"
}
}
query(wajib): pertanyaan pengembang atau frasa pencarian.k: jumlah hasil berperingkat. Default adalah 10 dan maksimum 100.skills: atur ke"only"untuk mencari file keterampilan agen saja.
Mengembalikan: Hasil berperingkat. Setiap hasil membawa ID, jenis sumber (issue, pull_request, readme, atau doc), URL, judul, dan bagian yang cocok dalam markdown.
firecrawl_search dengan categories: ["developer"] mencari indeks yang sama di samping hasil web. Gunakan alat ini sebagai gantinya ketika Anda menginginkan bagian yang cocok, filter skills, atau tanpa hasil web dalam respons. Endpoint khusus pencarian mengekspos kedua alat, dan pilihan yang sama berlaku di sana.
14b. Alat Pencarian Indeks Pemerintah (firecrawl_gov_search)
Cari materi hukum dan peraturan primer dari sumber pemerintah federal, negara bagian, dan lokal AS: statuta, peraturan, kode, opini pengadilan, dan publikasi pemerintah lainnya.
Paling cocok untuk: Pertanyaan hukum atau peraturan yang membutuhkan teks yang mengatur atau sumber pemerintah resmi.
Argumen:
{
"name": "firecrawl_gov_search",
"arguments": {
"query": "excessive force claims against police officers",
"k": 10,
"courtType": "federal-appellate",
"cites": "42 U.S.C. § 1983"
}
}
query(wajib): pertanyaan hukum atau peraturan atau frasa pencarian.k: jumlah hasil berperingkat. Default adalah 10 dan maksimum 100.jurisdiction: pertahankan hanya halaman dari satu yurisdiksi:"us"untuk federal, atau"us-"plus kode negara bagian atau teritori dua huruf, seperti"us-ca"atau"us-dc".court: pertahankan hanya halaman yang diberi label untuk satu pengadilan, berdasarkan id pengadilan CourtListener, seperti"scotus","ca9"atau"nysd".courtType: pertahankan hanya halaman dari satu jenis pengadilan:federal-supreme,federal-appellate,federal-district,federal-bankruptcy,federal-special,military,state-supreme,state-appellate,state-trial,state-specialataustate-attorney-general.cites: pertahankan hanya halaman yang mengutip satu hukum atau kasus, sebagai sitasi tercetak seperti"42 U.S.C. § 1983"atau"5 U.S. 137", atau id sitasi seperti"us:usc:42:1983".domain: pertahankan hanya halaman dari satu situs, seperti"irs.gov".
Filter bersifat opsional dan digabungkan: hasil harus cocok dengan setiap filter yang ditetapkan. Filter hanya mempertahankan halaman yang telah diberi label oleh indeks, sehingga pencarian yang difilter dapat meninggalkan halaman relevan, dan tidak ada hasil bukan berarti tidak ada yang ada. Label pengadilan paling lengkap untuk pengadilan federal dan koleksi hukum kasus.
Mengembalikan: Hasil berperingkat. Setiap hasil membawa posisi, judul, URL, dan cuplikan yang cocok. Endpoint khusus pencarian juga mengekspos alat ini.
firecrawl_search dengan categories: ["gov"] mencari sumber yang sama dan mengembalikan hit dalam data.web dengan category: "gov". Kategori gov tidak menerima filter ini dan tidak dapat digabungkan dengan kategori lain.
15. Alat Alexandria
Firecrawl Alexandria adalah katalog penyedia data yang dapat dijangkau melalui API Firecrawl dengan kunci API Firecrawl pada tim dengan akses Alexandria. Sesi tanpa kunci (hosted atau lokal) mendapatkan Alexandria requires an API key on a team with Alexandria access; alat penemuan Alexandria tidak dicantumkan untuk sesi tanpa kunci hosted.
Penemuan semantik (firecrawl_search):
{
"name": "firecrawl_search",
"arguments": {
"query": "podcast conversations about AI agents",
"sources": ["web", "alexandria"],
"domainTools": true,
"limit": 2
}
}
data.tools default ke saran ringkas dengan penyedia, kemampuan, dan
deskripsi. Atur toolDetail: "summary" untuk metadata dan navigasi, atau
toolDetail: "full" untuk kontrak termasuk input, bidang respons, dan contoh. domainTools: true menambahkan kecocokan kontekstual ke
sebutan kueri dan URL hasil dalam array yang sama. Periksa warning untuk penemuan
yang tidak tersedia. Pencarian memerlukan kueri dan tidak menerima filter penelusuran katalog.
Penemuan ini berfungsi pada permukaan MCP penuh maupun khusus pencarian.
Pengungkapan progresif (firecrawl_find_tools):
{
"name": "firecrawl_find_tools",
"arguments": {
"providers": ["particle"],
"capabilities": ["podcasts/episodes/search"],
"expand": ["options", "response", "examples"],
"limit": 2
}
}
Mulai tanpa argumen untuk kategori, lalu secara progresif mempersempit katalog:
| Argumen | Hasil |
|---|---|
{} | Kategori dan deskripsi singkat |
{"categories":["podcasts"]} | Penyedia dalam kategori tersebut |
{"categories":["podcasts"],"providers":["particle"]} | Nama dan deskripsi alat yang ringkas |
{"providers":["particle"],"capabilities":["podcasts/episodes/search"]} | Input, batasan, respons, dan contoh terpilih yang lengkap |
Tidak diperlukan lompatan grup. level eksplisit mendukung categories, providers,
groups, atau tools; expand eksplisit memilih bagian kontrak. expand: []
menjaga hasil tetap ringkas bahkan saat memilih kemampuan. Untuk kontrak penuh yang luas,
minta secara eksplisit level: "tools" dan expand: ["options", "response", "examples"].
URL menyediakan penemuan kontekstual tanpa mengambil halaman. Hasil alat menghilangkan
harga kredit per kemampuan kecuali includeCosts: true diatur; argumen
nextTool lanjutan mempertahankannya.
Hasil ada dalam data.alexandria[0].data. Ikuti nextTool suatu item dengan memanggil
name-nya dengan arguments-nya; nextTool halaman memajukan paginasi.
Objek next yang ada tetap menjadi panggilan penemuan Alexandria yang dapat digunakan melalui
firecrawl_scrape. Penemuan tidak memakan biaya kredit dan tidak pernah mengeksekusi
alat penyedia. Baca kontrak penuh yang dipilih sebelum eksekusi.
Kontrol ini memerlukan deployment API Alexandria yang sesuai.
Eksekusi (firecrawl_scrape dengan alexandria): berikan alexandria alih-alih url (tepat satu dari keduanya; requestId dan timeout juga dapat diberikan). Satu panggilan atau array hingga sepuluh panggilan diterima.
{
"name": "firecrawl_scrape",
"arguments": {
"alexandria": [
{
"provider": "fred",
"capability": "series/observations",
"options": { "series_id": "CPIAUCSL" }
}
]
}
}
Mengembalikan: { success, scrape_id, requestId, data: { alexandria: [...], creditsCost } }. Setiap item adalah hasil (provider, capability, data, records, upstreamStatus) atau error dengan code; batch tidak pernah gagal secara keseluruhan karena kesalahan penyedia dan data.creditsCost adalah total yang ditagihkan untuk permintaan tersebut. Badan kesalahan Alexandria (403 tanpa akses Alexandria, dan status penagihan 402/409) diteruskan secara in-band dengan code-nya.
Eksekusi menghasilkan satu x-request-id dan mengembalikannya saat berhasil atau gagal. Ulangi
payload yang identik dengan requestId tersebut; jangan buat ID baru setelah
hasil yang tidak pasti. Kredit yang tersedia diperiksa oleh API.
Penyedia Alexandria yang persyaratannya belum diterima oleh tim akan gagal sebelum apa pun berjalan dengan HTTP 403 dan badan ini:
{
"success": false,
"code": "THIRD_PARTY_DATA_TERMS_REQUIRED",
"error": "An organization admin must accept the benzinga provider's terms (version 2026-09-12-placeholder) before this request can run. Accept them at https://www.firecrawl.dev/app/alexandria/benzinga",
"requiresAction": {
"type": "accept_terms",
"terms": "benzinga",
"version": "2026-09-12-placeholder",
"url": "https://www.firecrawl.dev/app/alexandria/benzinga"
}
}
Hasil alat meneruskannya sebagai kesalahan dengan structuredContent yang membawa code,
status: 403, requestId, objek requiresAction tanpa perubahan, dan
next_actions (human_action_required lalu retry_same_request). Menerima
persyaratan adalah tindakan hukum, jadi admin organisasi menerimanya di dasbor Firecrawl, bukan
melalui MCP. Gunakan panggilan nextTool yang dikembalikan untuk membaca perjanjian melalui firecrawl_scrape
dengan alexandria: [{provider: "firecrawl", capability: "terms/show", options: {provider: "<provider>"}}],
dikirim terpisah dari eksekusi penyedia, dan sajikan kepada pengguna. Admin organisasi kemudian
menerimanya di requiresAction.url, atau di https://www.firecrawl.dev/app/settings?tab=data-sources.
firecrawl_scrape menolak setiap kemampuan terms/* lainnya, sehingga tidak membuat perubahan akun. Permintaan
data bukanlah persetujuan, dan tidak terjadi penerimaan otomatis atau percobaan ulang yang tidak pasti.
Tidak ada kredit yang ditagihkan untuk pengambilan yang diblokir. Setelah admin mengonfirmasi penerimaan, panggil alat yang sama
lagi dengan payload identik dan requestId.
16. Alat Penggunaan Kredit
Alat ini memerlukan akun Firecrawl yang terautentikasi dan bersifat hanya-baca.
firecrawl_credit_usagesecara default bernilai{ "view": "current" }dan mengembalikanremainingCredits,planCredits,billingPeriodStart, danbillingPeriodEnd. Kredit tersisa dapat melebihi kredit paket ketika tim memiliki top-up atau hibah.- Berikan
{ "view": "historical" }untuk periode bulan kalender yang berisistartDate,endDate, dancreditsUsed. Memberikan{ "byApiKey": true }juga memilih tampilan historis dan membagi periode berdasarkan kunci API; setiap baris kemudian menyertakanapiKey. Memberikan{ "byEndpoint": true }sebagai gantinya membagi periode berdasarkan endpoint yang menggunakan kredit (scrape, search, crawl, map, agent, ...); setiap baris kemudian menyertakanendpoint. Berikan{ "bin": "day" }untuk satu periode per hari UTC alih-alih per bulan kalender. Jangan menggabungkanbyApiKeydenganbyEndpoint, atau salah satunya dengan{ "view": "current" }.endDatepada periode terbaru bisa bernilai null. Jika API Firecrawl belum menyediakan pemisahan endpoint atau periode harian, hasilnya membawanoticedan angka bulanan.
Penggunaan programatik (tidak stabil)
Paket ini juga mengekspos titik masuk library untuk menyematkan server ke runtime lain. Ini tidak stabil: API, opsinya, dan tipenya dapat berubah pada rilis apa pun, termasuk rilis minor dan patch, jadi pin versi yang tepat.
npm install --save-exact firecrawl-mcp zod
Contoh tersebut mendefinisikan parameter tool dengan zod, sehingga proyek penyemat memasangnya sebagai dependensinya sendiri.
import { createFirecrawlMcpServer } from 'firecrawl-mcp/server';
import { z } from 'zod';
const server = createFirecrawlMcpServer({
transport: 'httpStream',
apiKey: process.env.FIRECRAWL_API_KEY,
unstable_hooks: {
registerExtraTools: (registrar) => {
registrar.addTool({
name: 'my_tool',
description: 'An extra tool served next to the Firecrawl tools.',
parameters: z.object({ text: z.string() }),
execute: async ({ text }) => text,
});
},
},
});
await server.start({
transportType: 'httpStream',
httpStream: { port: 3000, host: '127.0.0.1', endpoint: '/mcp', stateless: true },
});
// MCP endpoint: http://127.0.0.1:3000/mcp
Setel host secara eksplisit. Tanpanya, server mendengarkan di localhost, yang diikat Node ke satu alamat (sering kali hanya ::1), sehingga permintaan ke 127.0.0.1 ditolak. Gunakan 0.0.0.0 atau :: untuk menerima koneksi dari mesin lain hanya di balik kontrol akses jaringan atau pemeriksaan unstable_hooks.authenticate: tanpa itu, setiap pemanggil yang dapat menjangkau port akan dilayani dengan apiKey yang dikonfigurasi.
Library tidak memeriksa Host atau Origin kecuali diminta, dan header CORS-nya mengizinkan origin mana pun. Server yang dapat dijangkau dari browser di mesin yang sama sebaiknya memberikan httpStream.allowedHosts (misalnya ['localhost', '127.0.0.1', '[::1]']): permintaan yang header Host atau Origin-nya menunjuk host lain kemudian mendapat 403 (kecuali GET dan HEAD pada jalur health), dan header CORS menggemakan origin yang diizinkan. Baris perintah menyetel daftar ini dalam mode HTTP lokal.
Opsi mencerminkan variabel lingkungan CLI: apiUrl, apiKey, transport, logging, safeMode, fileAccess (local atau upload), requireCredential, searchFeedback dan endpointFeedback. unstable_hooks menerima:
| Hook | Tujuan |
|---|---|
authenticate(request) | Menyelesaikan sesi untuk suatu permintaan; lempar Response untuk menolaknya. |
wrapTool(tool) | Menghias setiap tool yang terdaftar. |
onToolResult(event) | Mengamati awal dan hasil setiap pemanggilan tool. |
instructions | Instruksi server, atau fungsi yang memilih dari default. |
registerExtraTools(registrar, context) | Menambahkan tool setelah tool bawaan. |
outboundRequest(session) | Kredensial dan header tambahan untuk setiap permintaan API Firecrawl. |
beforeKeylessRequest(session, origin) | Menolak permintaan tanpa kunci dengan melempar. |
toolFilter(name) | Mengeluarkan tool bawaan dari instans. |
configureHttp(app) | Menambahkan rute HTTP. |
oauth.protectedResource | Menyajikan metadata protected-resource OAuth. |
Server dibangun di atas MCP TypeScript SDK resmi (@modelcontextprotocol/server). Gunakan tipe yang diekspor dari firecrawl-mcp/server (Session, ToolDefinition, ToolRegistrar, FirecrawlMcpServerHooks dan lainnya) alih-alih tipe milik SDK itu sendiri.
Titik masuk juga mengekspor helper yang digunakan tool bawaan, seperti recoveryPayload, normalizeHeader, requestOrigin, isRuntimeUserAgent, initializeClientSlug, searchToolBaseFields, searchOutputSchema dan structuredCompact, sehingga tool dan hook tambahan dapat menyesuaikan perilaku bawaan. Helper tersebut juga tidak stabil.
Sistem Logging
Server menyertakan logging yang komprehensif:
- Status dan progres operasi
- Metrik kinerja
- Pelacakan batas laju
- Kondisi error
Contoh pesan log:
[INFO] Firecrawl MCP Server initialized successfully
[INFO] Starting scrape for URL: https://example.com
[ERROR] Rate limit exceeded
Penanganan Error
Server menyediakan penanganan error yang tangguh:
- Error batas laju API yang ditampilkan ke klien MCP
- Pesan error yang terperinci
- Ketahanan jaringan
Contoh respons error:
{
"content": [
{
"type": "text",
"text": "Error: Rate limit exceeded"
}
],
"isError": true
}
Pengembangan
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
Berkontribusi
- Fork repositori
- Buat branch fitur Anda
- Jalankan pengujian:
npm test - Kirim pull request
Terima kasih kepada para kontributor
Terima kasih kepada @vrknetha, @cawstudios atas implementasi awal!
Terima kasih kepada MCP.so dan Klavis AI atas hosting dan @gstarwd, @xiangkaiz dan @zihaolin96 atas integrasi server kami.
Lisensi
Lisensi MIT - lihat file LICENSE untuk detail
Data terstruktur dan hasil besar
Pencarian terautentikasi secara default menggunakan hasil web, tool semantik Alexandria, dan kecocokan domain. Mulailah dengan pertanyaan sebenarnya. Gunakan firecrawl_find_tools untuk pencarian tool semantik langsung, kontrak terpilih, atau penelusuran progresif: kategori → penyedia → tool ringkas → kontrak terpilih. Jalankan tool melalui firecrawl_scrape; scraping URL biasa dan pencarian tidak pernah otomatis menjalankan tool penyedia.
Untuk kontrak terpilih, utamakan expand: ["options", "response"] dan minta contoh hanya jika bentuk input tidak jelas. Periksa kapabilitas terkait secara bersamaan dan gunakan kembali kontrak yang dikembalikan.
Untuk hasil alur kerja yang berpotensi besar, berikan dan pertahankan requestId tingkat atas sebelum eksekusi. ID tersebut tetap tersedia meskipun klien menolak respons. Scrape URL biasa menggunakan ID scrape yang dikembalikan sebagai gantinya.
Untuk hasil alur kerja atau scrape biasa yang besar dan disimpan, panggil firecrawl_scrape dengan:
{
"alexandria": {
"provider": "firecrawl",
"capability": "bash",
"options": {
"requestId": "<source-request-or-scrape-id>",
"command": "ls -lh"
}
}
}
Baca stdout, stderr, exitCode, dan workspaceId di data.alexandria[0].data. Lanjutkan dengan options: {workspaceId, command} untuk memeriksa response.json menggunakan jq, atau document.md menggunakan perintah teks terbatas untuk scrape biasa. Jaga output tetap selektif. Pemuatan sumber harus berupa panggilan mandiri; ID sumber bersarangnya berbeda dari ID permintaan eksekusi tingkat atas. Workspace kedaluwarsa setelah lima menit tidak aktif, dan tidak semua hasil disimpan (termasuk payload alur kerja ZDR dan penyedia API). ID pencarian tidak didukung.
Untuk sumber alur kerja, response.json mempertahankan envelope API: pilih .data.alexandria[].data, lalu response.key dari kontrak terpilih jika tidak kosong. Gabungkan hitungan dan proyeksi terkait dalam satu perintah Bash jika bentuknya sudah diketahui, alih-alih berulang kali memeriksa kunci.
Respons eksekusi Alexandria yang berhasil di atas perkiraan 20.000 token (byte UTF-8 terserialisasi dibagi empat) mengembalikan handoff kecil setelah Bash jarak jauh mengonfirmasi seluruh batch dapat diakses. Ikuti nextTool untuk memeriksa data yang disimpan. Ini menambahkan satu panggilan Bash dan memulai workspace dengan TTL tidak aktif lima menit. Payload lengkap dipertahankan. Jika konfirmasi gagal, respons asli tetap inline. Pencarian, scrape URL biasa, respons error, dan panggilan utilitas Firecrawl tidak berubah. Anggaran pengiriman ini tidak mengukur sisa konteks klien; tidak ada cache hasil lokal-proses yang ditambahkan. Ketika tool filesystem lokal tersedia, menyimpan output CLI dan membaca bagian terpilih adalah opsi lain.
Urutan penemuan CLI dipetakan ke panggilan MCP berikut:
| Maksud | Tool | Argumen |
|---|---|---|
| Tool web + semantik + domain | firecrawl_search | {"query":"<user question>"} |
| Hanya tool semantik | firecrawl_search | {"query":"<user question>","sources":["alexandria"]} |
| Kategori | firecrawl_find_tools | {} |
| Penyedia dalam suatu kategori | firecrawl_find_tools | {"categories":["<category-id>"]} |
| Tool penyedia ringkas | firecrawl_find_tools | {"providers":["<provider-id>"]} |
| Kontrak terpilih | firecrawl_find_tools | {"providers":["<provider-id>"],"capabilities":["<capability-id>"]} |
| Eksekusi | firecrawl_scrape | {"alexandria":{"provider":"<provider-id>","capability":"<capability-id>","options":{"<required-field>":"<value>"}}} |
Find Tools dan eksekusi tersedia pada permukaan penuh maupun permukaan pencarian. Gunakan kembali kontrak lengkap dari pencarian jika ada, alih-alih melakukan panggilan penemuan lain. Ikuti navigasi nextTool yang dikembalikan hanya jika diperlukan lebih banyak hasil.
Umpan balik sesi Alexandria
Tool firecrawl_feedback yang ada menerima endpoint: "alexandria":
{
"endpoint": "alexandria",
"rating": "partial",
"requestedWebsite": {
"url": "https://example.com",
"requestedFunctionality": "Find records and download their attachments"
},
"objective": "Compare contract requirements across agencies before bidding",
"rationale": "Found summaries but could not retrieve attachments"
}
objective opsional adalah tujuan mendasar dari sesi: apa yang pada akhirnya ingin dicapai oleh agen atau penggunanya, di luar satu situs web di requestedWebsite.
Ini menggunakan POST /v2/feedback terautentikasi, tanpa ID pekerjaan. Ini harus tiba dalam 20 menit sejak pencarian, penemuan, atau eksekusi Alexandria terbaru tim; umpan balik yang lebih lambat ditolak dengan FEEDBACK_WINDOW_EXPIRED. Umpan balik yang memenuhi syarat dapat mengembalikan 1 kredit, dengan batas harian 10 kredit per situs web dan 100 kredit per tim (hari UTC). Setelah salah satu batas terlampaui, umpan balik tetap dicatat tanpa pengembalian dana, dan respons menyetel websiteCapReached atau dailyCapReached. Array providerFeedback dan capabilityFeedback opsional menjelaskan celah cakupan dan masalah eksekusi; skema tool mencantumkan nilai masalah yang didukung. new_capability_request memerlukan requestedFunctionality; missing_capability (penyedia ada tetapi tidak memiliki kapabilitas tersebut) tidak memerlukannya. Kontrol opt-out umpan balik dan autentikasi yang ada tetap berlaku.
Hasil eksekusi dan penemuan Alexandria yang memenuhi syarat menyertakan penunjuk feedbackTool dengan nama tool dan kerangka argumen. Penunjuk dihilangkan untuk panggilan internal Firecrawl seperti bash dan ketika firecrawl_feedback tidak terdaftar (FIRECRAWL_NO_ENDPOINT_FEEDBACK atau startup tanpa kunci).