Skip to main content
Glama
firecrawl

firecrawl-mcp-server

firecrawl_monitor_create

Create a recurring monitor that scrapes, crawls, or searches web pages and sends alerts when meaningful changes occur. Specify URLs or search queries with a plain-language goal.

Instructions

Create a Firecrawl monitor — a recurring scrape, crawl, or search that diffs each result against the last retained snapshot.

Prefer the simple path: pass page or pages plus goal to monitor specific URLs, OR pass queries plus goal to monitor web search results for new/changed hits. The tool will create the monitor with a 30-minute schedule and meaningful-change judging enabled by the API. Use body only for advanced requests such as crawl targets, JSON change tracking, custom retention, or manual judgeEnabled control.

Meaningful-change judge: set goal to a plain-language description of what the user actually cares about. judgeEnabled defaults to true when goal is set, so providing goal is enough. Page webhooks expose isMeaningful and judgment on monitor.page events.

Simple fields:

  • page: one page URL to monitor.

  • pages: multiple page URLs to monitor.

  • queries: one or more search queries (1-12) to monitor instead of fixed URLs. Each check runs the searches and diffs the result set, so you get alerted when new or changed results appear. Mutually exclusive with page/pages in the simple path.

  • searchWindow: optional recency window for search targets — one of 5m, 15m, 1h, 6h, 24h, 7d (default 24h).

  • maxResults: optional max results per search, 1-50 (default 10).

  • includeDomains / excludeDomains: optional domain allow/deny lists for search targets.

  • goal: plain-English instruction for what changes matter. Required for the simple path (and always required when queries are set — web monitors must have a goal).

  • scheduleText: optional natural-language schedule, default every 30 minutes.

  • email: optional email recipient for summaries.

  • webhookUrl: optional webhook URL. Configures monitor.page and monitor.check.completed.

Search-mode example:

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "queries": ["new LLM release", "frontier model launch"],
    "goal": "Notify me about major new LLM model releases.",
    "searchWindow": "24h",
    "maxResults": 10
  }
}

Goal guidance:

  • Expand the user's one-line monitoring intent into a concise 2-3 sentence monitor goal.

  • State what should trigger an alert, restate any scope the user gave, and include intent-specific exclusions only when obvious from the user's request.

  • Generic noise such as whitespace, formatting-only changes, request IDs, tracking params, generic metadata, and unrelated page chrome is already handled by the judge; do not repeat it in every goal.

  • If the user is vague, keep the goal broad rather than guessing exclusions. If the user asks for broad monitoring or "any change", preserve that and do not add exclusions that hide changes.

  • If the user says they do not care about something, include that explicitly. It is okay to ask whether they want to ignore specific noise when it is likely to matter.

  • Do not invent page-specific sections, thresholds, entities, or business rules unless the user mentioned them.

Query guidance (web monitors): queries control recall (what search retrieves) and goal controls precision (which results alert) — tune both.

  • Write keywords, not sentences: OpenAI new model release, not tell me when OpenAI releases a new model.

  • Quote multi-word entities ("Llama 4"); group synonyms with OR (launch OR release OR announcement).

  • Keep each query tight (~2-6 terms). One broad query usually beats several narrow ones — extra queries split the maxResults budget. Use one query per distinct entity; do not emit one per facet of a single subject.

  • Keep site: operators out of queries — use includeDomains / excludeDomains.

  • A healthy web monitor mostly returns new: 0 and alerts only on genuinely new, on-goal results. Many ignored results ⇒ queries too broad (tighten them); nothing for long stretches ⇒ queries too narrow or window too tight (broaden); dismissed alerts ⇒ goal too broad (add an intent-specific Ignore). Aim for high precision with enough recall.

Full body requests require: name, schedule (with cron or text), and targets (one or more { type: 'scrape', urls: [...] }, { type: 'crawl', url: '...' }, or { type: 'search', queries: [...], searchWindow?, maxResults?, includeDomains?, excludeDomains? }). Optional: goal (required when any search target is present), judgeEnabled, webhook, notification, retentionDays.

Markdown-mode (default): Each check produces a unified text diff of the page's markdown. No extra configuration needed.

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "page": "https://example.com/blog",
    "goal": "Alert when a new blog post is published or an existing headline changes.",
    "email": "alerts@example.com"
  }
}

Multiple pages:

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

JSON-mode change tracking: To detect changes in specific structured fields (price, headline, in-stock flag, list items) instead of the whole page, add a changeTracking format with modes: ["json"] and a JSON schema to the target's scrapeOptions.formats. The check response will then carry a per-field diff (keyed by JSON path, e.g. plans[0].price) and a snapshot.json with the full current extraction. See firecrawl_monitor_check for the response shape.

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "body": {
      "name": "Pricing watch",
      "schedule": { "text": "hourly", "timezone": "UTC" },
      "goal": "Alert when a pricing tier, price, billing period, limit, or headline feature changes. Ignore unrelated marketing copy unless it changes the pricing offer.",
      "targets": [{
        "type": "scrape",
        "urls": ["https://example.com/pricing"],
        "scrapeOptions": {
          "formats": [{
            "type": "changeTracking",
            "modes": ["json"],
            "prompt": "Extract pricing tiers and headline features for each plan.",
            "schema": {
              "type": "object",
              "properties": {
                "plans": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name":     { "type": "string" },
                      "price":    { "type": "string" },
                      "features": { "type": "array", "items": { "type": "string" } }
                    }
                  }
                }
              }
            }
          }]
        }
      }]
    }
  }
}

Mixed mode (JSON + git-diff): Use modes: ["json", "git-diff"] to get both per-field diffs and a markdown sidecar. The page is marked changed whenever either surface changed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyNo
goalNo
nameNo
pageNo
emailNo
pagesNo
queriesNo
timezoneNo
maxResultsNo
webhookUrlNo
includeDiffsNo
scheduleTextNo
searchWindowNo
excludeDomainsNo
includeDomainsNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description fully discloses behavioral traits: monitoring is recurring with a default 30-minute schedule, uses meaningful-change judging, exposes webhooks for page events, and supports diff-based alerts. Annotations (readOnlyHint=false, destructiveHint=false) are consistent. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly verbose, with multiple sections and examples that repeat concepts. While structured, it contains unnecessary detail (e.g., goal guidance, query guidance) that could be condensed. The length impacts readability for an AI agent parsing tool definitions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (15 parameters, no required params, no output schema, multiple modes), the description is comprehensive. It covers all parameters, provides goal guidance, query formatting, examples for each mode (simple, multiple pages, JSON tracking, mixed), and explains behavioral nuances. It leaves no significant gaps for an AI agent to resolve.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description provides extensive parameter semantics for all 15 parameters, including simple fields (page, pages, queries, goal, etc.) and detailed body structure with examples. It also explains enums like searchWindow and constraints like maxResults range. This fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Create a Firecrawl monitor — a recurring scrape, crawl, or search that diffs each result against the last retained snapshot.' It uses a specific verb ('Create') and resource ('monitor'), and distinguishes it from sibling tools like firecrawl_monitor_check by focusing on creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description guides when to use simple parameters (page, pages, queries) vs. the 'body' for advanced requests. It also explains when to use queries vs. fixed URLs. However, it does not explicitly compare against other monitor tools (e.g., firecrawl_monitor_check), leaving some ambiguity for an agent to decide between creation and retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/firecrawl/firecrawl-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server