Firecrawl MCP

resmi

Menambahkan 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_map sebelum 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 dengan limit, includePaths/excludePaths, atau maxDiscoveryDepth.
  • Kendalikan browser — Klik, ketik, isi formulir, atau navigasi halaman dinamis dengan firecrawl_interact, lanjutkan sesi melalui scrapeId.
  • 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_scrape ketika Anda memiliki URL yang diketahui dan menginginkan kontennya sebagai markdown atau sebagai JSON yang sesuai dengan skema yang Anda berikan.
  • Gunakan firecrawl_map ketika Anda perlu menemukan URL di sebuah situs tanpa mengambil kontennya.
  • Gunakan firecrawl_crawl ketika Anda memerlukan konten dari banyak halaman di bawah sebuah situs; atur limit, includePaths/excludePaths, atau maxDiscoveryDepth untuk membatasinya.
  • Gunakan firecrawl_search ketika Anda memulai dari kueri alih-alih URL dan menginginkan hasil web yang diperingkat. Hasil membawa kutipan; ambil halaman penuh dengan firecrawl_scrape pada URL yang Anda butuhkan. scrapeOptions mengambil 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_interact ketika sebuah halaman memerlukan tindakan klik, ketik, atau navigasi sebelum Anda dapat membacanya: berikan url untuk halaman baru atau scrapeId untuk 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_usage untuk 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_interact menjalankan satu giliran prompt atau code hingga selesai dan mengembalikan kendali. Sesi dapat bertahan di antara panggilan melalui scrapeId dan berakhir dengan firecrawl_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

  1. Buka Pengaturan Cursor
  2. Pergi ke Features > MCP Servers
  3. Klik "+ Add new global MCP server"
  4. 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

  1. Buka Pengaturan Cursor
  2. Pergi ke Features > MCP Servers
  3. Klik "+ Add New MCP Server"
  4. 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...

Install with NPX in VS Code Install with NPX in VS Code Insiders

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)
  • FIRECRAWL_INTEGRATION (Opsional): Tag integrasi untuk aplikasi yang meluncurkan server ini, seperti ekstensi editor
    • Dikirim sebagai bidang integration dari permintaan scrape, batch scrape, crawl, map, search, extract, agent, parse, interact dan feedback
    • Gunakan nilai yang dimulai dengan _, misalnya _zed

Mode HTTP lokal

  • FIRECRAWL_MCP_ALLOWED_HOSTS (Opsional): Nama host atau alamat tambahan yang dijawab server dengan HTTP_STREAMABLE_SERVER=true atau SSE_LOCAL=true, dipisahkan koma
    • localhost, 127.0.0.1, [::1] dan HOST non-wildcard selalu diizinkan; port diabaikan
    • Permintaan yang header Host atau Origin-nya menyebut host lain akan mendapat 403, kecuali permintaan GET dan HEAD ke /health
    • * mematikan pemeriksaan; tidak digunakan bersama CLOUD_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, atau SSE_LOCAL=true): Klien harus mengirim Authorization: Bearer <fco_access_token> pada permintaan MCP. Token bearer OAuth diprioritaskan di atas x-firecrawl-api-key / x-api-key bila keduanya ada.
  • stdio: Gunakan FIRECRAWL_OAUTH_TOKEN untuk token akses statis, atau tetap gunakan FIRECRAWL_API_KEY untuk 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. search dengan categories: ["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 scrape alexandria

Tabel Referensi Cepat

ToolPaling cocok untukMengembalikan
scrapeKonten satu halamanJSON (disarankan) atau markdown
interactBerinteraksi dengan URL atau halaman hasil scrapeHasil eksekusi + scrapeId untuk mode URL
mapMenemukan URL di sebuah situsURL[]
crawlEkstraksi multi-halaman (dengan batasan)status/data crawl final setelah polling internal
parseFile dan referensi unggahan terhostingmarkdown, JSON, atau output dokumen
searchPencarian web untuk informasiresults[]
find_toolsPenjelajahan katalog Alexandria dan pencarian URLprovider, kontrak tool, dan navigasi nextTool
developerPertanyaan pemrograman atas sumber developerresults[] dengan passage
govHukum primer dan materi regulasi ASresults[] dengan snippet
agentRiset multi-sumber, situs tidak diketahui atau banyakJSON (data terstruktur)
monitorPemeriksaan halaman berulangmetadata dan diff monitor/check
researchRiset makalah dan repositori GitHubhasil 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 field id. Setiap hasil membawa source dan position berindeks-1, dinomori dari 1 dalam grupnya sendiri — salin pasangan tersebut langsung ke valuableResults milik firecrawl_search_feedback alih-alih menghitung elemen array. Teruskan id tersebut ke firecrawl_search_feedback setelah 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, dan data. Gunakan id yang dikembalikan dengan firecrawl_check_crawl_status jika 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:

  1. Panggil firecrawl_agent dengan prompt/skema Anda → mengembalikan ID pekerjaan
  2. Lakukan pekerjaan lain sementara agen melakukan riset (bisa memakan waktu beberapa menit untuk kueri kompleks)
  3. Lakukan polling firecrawl_agent_status dengan ID pekerjaan untuk memeriksa kemajuan
  4. 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 tertentu
  • schema: Skema JSON opsional untuk keluaran terstruktur
  • effort: 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. Jika true, agen hanya mengunjungi URL di urls.
  • threadId: Opsional. Lanjutkan thread yang ada: threadId dari hasil firecrawl_agent atau firecrawl_agent_status sebelumnya. Hilangkan untuk memulai thread baru. Pada tindak lanjut, pengaturan mode, urls, schema dan exchange yang 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 di message alih-alih menjalankan ulang; exchange.requireApproval memerlukannya.
  • exchange: Opsional. Pengaturan penyedia Alexandria untuk giliran ini, diteruskan apa adanya ke POST /v2/agent:
    • enabled, toolkits (hingga 5 slug penyedia), maxCalls (1 hingga 30), requireApproval (panggilan berbayar mengakhiri giliran dengan pendingApproval; memerlukan mode: "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.skippedProviders pada hasil status mencantumkan penyedia yang dibatasi yang seharusnya membantu.
      • "ask": sama, ditambah persyaratan pendingApproval dan exchange.requiresAction dengan ID persetujuan dan persyaratan penyedia. Baca persyaratan dengan terms/show; admin organisasi menyetujuinya di dasbor Firecrawl.
    • approve: { approvalId, callIds?, always? } menjawab ya untuk pendingApproval yang mengakhiri giliran sebelumnya. callIds dan always hanya berlaku untuk persetujuan panggilan berbayar.
    • decline: { approvalId } menjawab tidak. Tawaran persyaratan yang ditolak membuat penyedia tersebut tetap di luar sisa thread.
    • approve dan decline memerlukan threadId, 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:

  1. Tunjukkan persyaratan kepada pengguna (terms/show hingga firecrawl_scrape dengan alexandria).
  2. Arahkan admin organisasi untuk menyetujui persyaratan di URL penyedia, atau pengaturan sumber data. Permintaan data bukanlah persetujuan.
  3. Tunggu admin mengonfirmasi penerimaan di dasbor.
  4. Lanjutkan thread yang sama: panggil firecrawl_agent dengan threadId dan exchange.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 threadId dan threadTurn. Gunakan firecrawl_agent_status untuk 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 nanti
  • completed: Riset selesai - respons menyertakan data yang diekstrak
  • failed: 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 url untuk scrape dan membuka halaman untuk interaksi dalam satu panggilan MCP.
  • Berikan scrapeId untuk melanjutkan interaksi dengan halaman yang sudah di-scrape.
  • Untuk menyimpan status browser (cookie, localStorage) ke profil bernama, berikan url dengan scrapeOptions: { "profile": { "name": "my-profile", "saveChanges": true } }. Status disimpan ketika firecrawl_interact_stop mengakhiri sesi.
  • Berikan tepat satu dari url atau scrapeId, ditambah salah satu dari prompt atau code.

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 termasuk goal, judgeEnabled, webhook, dan notification.
  • 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, termasuk diff, snapshot, judgment.meaningful, dan judgment.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-special atau state-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:

ArgumenHasil
{}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_usage secara default bernilai { "view": "current" } dan mengembalikan remainingCredits, planCredits, billingPeriodStart, dan billingPeriodEnd. Kredit tersisa dapat melebihi kredit paket ketika tim memiliki top-up atau hibah.
  • Berikan { "view": "historical" } untuk periode bulan kalender yang berisi startDate, endDate, dan creditsUsed. Memberikan { "byApiKey": true } juga memilih tampilan historis dan membagi periode berdasarkan kunci API; setiap baris kemudian menyertakan apiKey. Memberikan { "byEndpoint": true } sebagai gantinya membagi periode berdasarkan endpoint yang menggunakan kredit (scrape, search, crawl, map, agent, ...); setiap baris kemudian menyertakan endpoint. Berikan { "bin": "day" } untuk satu periode per hari UTC alih-alih per bulan kalender. Jangan menggabungkan byApiKey dengan byEndpoint, atau salah satunya dengan { "view": "current" }. endDate pada periode terbaru bisa bernilai null. Jika API Firecrawl belum menyediakan pemisahan endpoint atau periode harian, hasilnya membawa notice dan 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:

HookTujuan
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.
instructionsInstruksi 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.protectedResourceMenyajikan 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

  1. Fork repositori
  2. Buat branch fitur Anda
  3. Jalankan pengujian: npm test
  4. 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:

MaksudToolArgumen
Tool web + semantik + domainfirecrawl_search{"query":"<user question>"}
Hanya tool semantikfirecrawl_search{"query":"<user question>","sources":["alexandria"]}
Kategorifirecrawl_find_tools{}
Penyedia dalam suatu kategorifirecrawl_find_tools{"categories":["<category-id>"]}
Tool penyedia ringkasfirecrawl_find_tools{"providers":["<provider-id>"]}
Kontrak terpilihfirecrawl_find_tools{"providers":["<provider-id>"],"capabilities":["<capability-id>"]}
Eksekusifirecrawl_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).