Scope the capabilities page and add Cloud availability per row - #1364
Open
hmishra2250 wants to merge 3 commits into
Open
Scope the capabilities page and add Cloud availability per row#1364hmishra2250 wants to merge 3 commits into
hmishra2250 wants to merge 3 commits into
Conversation
…owser Sandbox addressable Third-party pages assert capability and licence facts about Firecrawl that our own artifacts contradict. Deep Insights Sep-3 verification (F5-CORRECTION-QUEUE, grade C+, both-sides-cited rows) found: - "Node.js only (no Python bindings)" — refuted; `from firecrawl import Firecrawl` appears in multiple snapshots and in /sdks/python. - "Apache 2.0 licence" — refuted; the core repository LICENSE is AGPL-3.0 with MIT SDKs. - "Firecrawl cannot fill out a form" — contradicted by /features/interact. The verifier's one engineering fix is a canonical, extractable page whose first ~500 tokens answer each denied capability as a standalone declarative sentence with a runnable example, and state the licence split plainly, so agents and reviewers retrieve the canonical answer instead of the third-party one. Adds capabilities-and-licensing.mdx: - "Capabilities at a glance": ten declarative-sentence headings, each citing the in-repo page that documents it and carrying the smallest example already published in these docs. - "Licensing": transcribed from LICENSE/README/package manifests in the firecrawl and firecrawl-mcp-server repositories. Facts not verifiable from a local repo file carry [LEGAL REVIEW: confirm] placeholders instead of an assertion, including the AGPL-obligation-trigger wording. - "Common misconceptions": each denied capability mapped to the correct statement and its documentation link, neutral, no vendor names. Also addresses OB-03 (Aug-30 wave, verified): the interact/authenticated capability is documented but not addressable — features/browser was absent from navigation, agents never named "Interact"/"Browser Sandbox" (0 of 140 developer answers) and reasoned from the legacy `actions` array instead. This commit adds an "Interact / Browser Sandbox" nav group carrying both features/interact and features/browser, renames the API-reference group to "Interact / Browser Sandbox Endpoints", and gives features/interact a job-to-be-done opener (scrape behind a login; click through pagination; fill and submit a form; reuse an authenticated session; start a session without scraping) linking only to sections that already exist. Evidence: Deep Insights F5-CORRECTION-QUEUE (2026-09-03) and OB-03 (2026-08-30). No localized files or navigation blocks were modified. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Review outcome on docs/capabilities-and-licensing: the capability/ addressability half ships, the licensing half is blocked on Legal and must not ship as canonical. - Rename capabilities-and-licensing.mdx -> capabilities.mdx and update the Get Started nav entry. - Remove the Licensing section, the AGPL obligations note, the licence-dependent misconception row, and every [LEGAL REVIEW: confirm] placeholder from the published page. Nothing in the shipped page now depends on an unresolved licence fact. - Preserve the removed draft verbatim at drafts/licensing-DRAFT.md — a plain .md file in a non-navigated directory, so Mintlify does not build it as a page (same pattern as reconciliation/INITIAL_DRIFT_REPORT.md). It carries the blockers and the proposed Core PR for Legal to pick up. - Opening paragraph no longer claims all SDKs are MIT. That claim is contradicted by apps/python-sdk/setup.py:67 (GPLv3) and by five SDKs that ship no LICENSE file at all. - Add an Availability column (Cloud / self-hosted) to a new capabilities-at-a-glance table, plus an inline availability line on each capability section. Agent, Browser and Interact are Cloud-delivered per contributing/open-source-or-cloud.mdx:30 and contributing/self-host.mdx:180; screenshots and page actions likewise; structured JSON extraction needs an OpenAI-compatible provider or Ollama when self-hosted. - Search: the first-screen sentence and the section heading now state the real contract — titles, descriptions and URLs by default, full page content when scrapeOptions is supplied (features/search.mdx:32). - Self-host snippet is runnable: adds `cd firecrawl` and the pinned `git checkout v2.11.162`, and points at the required .env step rather than implying `docker compose up` is the next command (contributing/self-host.mdx:66-89). - Fix the anchor introduced with the OB-03 opener: the live slug is #persistent-profiles-with-scrape-+-interact, not the double-dash form. The OB-03 fix is kept intact: features/browser is addressable in nav, the API-reference group is renamed to Interact / Browser Sandbox Endpoints, and features/interact.mdx opens with jobs-to-be-done. Deep Insights: F5 (capability claims not addressable from a canonical page), OB-03 (Browser Sandbox unreachable from navigation).
Review found the D2 blocker: Mintlify routes unnavigated .md files as live public pages (docs.firecrawl.dev/reconciliation/INITIAL_DRIFT_REPORT -> 200), so drafts/licensing-DRAFT.md, absent only from docs.json nav, would have deployed at /drafts/licensing-DRAFT with its own first line reading "DO NOT PUBLISH". - git rm drafts/licensing-DRAFT.md. Checked for a genuinely non-deployed location: docs.json has no ignore/exclude key of any kind, and the root README.md's 404 is Mintlify special-casing that literal filename, not a property of being unnavigated -- there is no second README.md in the tree to confirm it generalizes to a subdirectory. No provably unrouted location exists in this repo, so the draft is kept out entirely rather than relocated in-repo. - Preserved the draft's full content (licence table, AGPL note, removed misconception row, "what must not be said" list, proposed Core PR) in the review report at scratchpad/product-prs/D2-capabilities-licensing-v2.md under "Licensing draft (for Legal; not in repo)". - Grepped the branch diff (git diff --name-status origin/main...HEAD): the only other added file is capabilities.mdx, which is navigated in docs.json. No other unnavigated content added. - docs.json parses; mint broken-links (Node 22.23.2): 208/95 files, byte-identical to origin/main baseline, neither touched file appears; mint validate: same pre-existing 17 warnings, none on touched files.
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Third-party pages assert Firecrawl capability facts that Firecrawl's own snapshots contradict, and
the Interact and Browser Sandbox surfaces were not addressable at all:
features/browserwas absentfrom navigation. This branch adds a canonical
capabilities.mdxwith a Cloud versus self-hostedavailability column repeated inline in every section, puts Browser Sandbox in the nav, and removes
the licensing section from the published page pending Legal. It also fixes five occurrences of a
broken anchor the original branch was shipping.
Why (evidence)
Source reports: Weekly Deep Insights
DI-2026-09-03-WEEKLY(2026-09-03) andDI-2026-08-30-WEEKLY(2026-08-30); Developer-bank positioning read
(
analysis/loop/run/DEVELOPER-POSITIONING-READ.txt, 2026-08-31).Findings: F5-CORRECTION-QUEUE, thesis "current third-party pages assert Firecrawl capability and
licence facts that other current snapshots contradict". Grade C plus, verdict file
verdicts/deep-F5-corrections.md, where only 2 of 7 targets were double-cited but those two are theones the branch acts on. OB-03-interactive-capability-not-addressable, grade B in the
2026-09-03 review: "documented but not addressable: it lives inside extraction pages behind a bounty
and a Preview label." Developer read hypothesis H3: the Interact sandbox is invisible to the
models reasoning about Firecrawl, with 0 of 140 developer answers mentioning Interact or Browser
Sandbox and 4 mentioning the legacy
actionsarray; adjudications D2, D4, D12 and D13 are STALE.Verified evidence: aimultiple.com asserts "Node.js only (no Python bindings)" against snapshots
showing
from firecrawl import FirecrawlApp; dev.to asserts "Apache 2.0 licence" and "103,000GitHub stars" against a README snapshot showing AGPL-3.0 core with MIT SDKs and 175.7k stars;
knowledgesdk.com asserts "Firecrawl cannot fill out a form." against
docs/features/interact.Developer traces VDEV-202, VDEV-222, VDEV-247 and VDEV-953 reason about
actionsas if it were thewhole product.
Availability facts are sourced to
contributing/open-source-or-cloud.mdx:30("Agent, Browser,managed dashboards, enhanced proxy paths, and enterprise controls are delivered through Cloud") and
the self-hosted feature-support table at
contributing/self-host.mdx:175-180.Final verdict: APPROVE per the resolution addendum to
review-grounding/FINAL-REVIEW-docs-mcp.md. The review body records REQUEST CHANGES; that blockeris described and resolved below.
Changes
capabilities-and-licensing.mdxbecomescapabilities.mdx, git-tracked as a rename, 192 lines.Sections: opening paragraph,
## Capabilities at a glance, 10 capability sections with runnableexamples,
## Common misconceptions, GitHub-figures note.## Capabilities at a glancetable carriesCapability | Availability | Documented in.Behavior contract: every capability section repeats its availability inline, so the fact survives
being retrieved in isolation, which was the original defect. Interact, Browser Sandbox, login and
session reuse, and screenshots and page actions are marked Cloud only, citing
/contributing/self-host#self-hosted-feature-supportand/contributing/open-source-or-cloud#use-firecrawl-cloud-when. JavaScript rendering, PDF parsing,and Search are Cloud and self-hosted; structured JSON extraction on self-hosted requires an
OpenAI-compatible provider or Ollama. Two rows go beyond the brief (screenshots and page actions;
the provider requirement for structured extraction) because the same self-host table states them
and their absence would reproduce the same false-composite defect.
the first screen: "returns titles, descriptions, and URLs, and full page content for every result
when
scrapeOptionsis supplied."Highlights) and the
scrapeOptions/scrape_optionscontract, perfeatures/search.mdx:32and:34.git clone,cd firecrawl,git checkout v2.11.162, with prosepointing at the mandatory
.envstep and thedocker composeinvocation atcontributing/self-host.mdx#configure-the-evaluation-deployment. The previous two-liner randocker composein the parent directory and created no.env.## Licensingsection (8-row table plus AGPL Note), the licence-dependent misconception row,and all three
[LEGAL REVIEW: confirm]placeholders are removed from the published page. Themisconceptions table keeps 5 rows: the licence row is replaced by a self-hosting-parity row.
docs.json:features/browsernested under a new "Interact / Browser Sandbox" nav group; theAPI-reference group renamed from "Interact Endpoints" to "Interact / Browser Sandbox Endpoints";
the Get Started entry retargeted from
capabilities-and-licensingtocapabilities.features/interact.mdxgains the jobs-to-be-done opener from OB-03.#persistent-profiles-with-scrape--interactwith a double dash. The live slug is#persistent-profiles-with-scrape-+-interact, verified againsthttps://docs.firecrawl.dev/features/interact. Five occurrences corrected. This was shippingbroken in the original branch.
Blocker resolved in commit
4d8be852. The branch had preserved the licensing content atdrafts/licensing-DRAFT.mdon the claim that an unnavigated.mdfile has no URL. That claim isfalse:
https://docs.firecrawl.dev/reconciliation/INITIAL_DRIFT_REPORTreturns 200 with a fullrendered Mintlify page, a title and an OG image, and so does
.../CLAUDE, while.../reconciliation/THIS_DOES_NOT_EXIST_XYZreturns 404 as a control. Absence fromdocs.jsonremoves the sidebar link, not the route, so the branch would have published a live public page whose
first line reads "DRAFT — Licensing (BLOCKED ON LEGAL — DO NOT PUBLISH)". No provably unrouted
in-repo location exists:
docs.jsonhas noignoreorexcludekey of any kind (its onlytop-level keys are
$schema, colors, contextual, favicon, footer, integrations, logo, name, navbar, navigation, redirects, seo, theme), and the one live 404 found,docs.firecrawl.dev/README, isMintlify special-casing that literal root filename with no second
README.mdin the tree to confirmit generalizes. The file was therefore removed with
git rm; the draft content is preserved forLegal in
scratchpad/product-prs/D2-capabilities-licensing-v2.mdand ships nowhere.Diffstat: 3 files changed, 210 insertions, 2 deletions.
Verification
docs.jsonparses as valid JSON.Nav resolution: 1,772 nav entries, 1,430 unique, 0 missing files. This is the check that catches the
rename regression.
Internal links on the touched files: all
](/…)targets incapabilities.mdxandfeatures/interact.mdxexist as.mdxfiles, 0 broken.Anchors verified against the live rendered page rather than a local slug guess, which is how the
double-dash bug surfaced:
#persistent-profiles-with-scrape-+-interactconfirmed present in theserved HTML from
curl https://docs.firecrawl.dev/features/interact, plus#use-firecrawl-cloud-when(:27),#self-hosted-feature-support(:170),#configure-the-evaluation-deployment(:73),#interact-via-prompting(:105),#running-code(:126),#session-lifecycle(:228), and/features/search-highlights. HTTP 200on all pages checked.
Negative control on published content: grep across all
*.mdxexcludingdrafts/returns zero hitsfor
LEGAL REVIEWand zero forSDKs are MIT. The only AGPL and MIT strings in published.mdxare pre-existing ones in
v1/introduction.mdx, its localizations, andlearn/guide/firecrawl-ui-template.mdx, none touched by this branch. No dangling reference tocapabilities-and-licensingremains in any non-localized.mdxor.json.Diff audit for stray unnavigated content:
git diff --name-status origin/main...HEADlists onlycapabilities.mdx(new, navigated),docs.json,features/interact.mdxand the removeddrafts/licensing-DRAFT.md.mint broken-linksunder Node 22.23.2: 208 broken links in 95 files, identical to baseline; neithercapabilities.mdxnorfeatures/interact.mdxappears.mint validate: the same 17 pre-existinglocale snippet warnings; no touched file appears.
Localized trees untouched, per the repo
CLAUDE.md.Not in this PR
AGPL-obligations placeholder, the removed misconception row and the "what must not be said" list,
lives only in
scratchpad/product-prs/D2-capabilities-licensing-v2.md. It must not be added backto the docs repo in any form, navigated or not, until Legal signs off, because Mintlify has no
proven mechanism in this repo to keep a committed file out of the public site. Two things block
publication: Legal must confirm the SDK licence position, and Core must fix the underlying
declarations.
chore(licensing): fix stale GPLv3 declaration and add missing SDK LICENSE files. Item 1:apps/python-sdk/setup.py:67declareslicense="GNU General Public License v3 (GPLv3)",contradicting
apps/python-sdk/LICENSE(MIT) andapps/python-sdk/pyproject.toml:22(
license = {text = "MIT License"}); that string is what lands in PyPI package metadata for anybuild still going through
setup.py. Item 2:apps/go-sdk,apps/rust-sdk,apps/php-sdk,apps/java-sdkandapps/dot-net-sdkship noLICENSEfile, whileREADME.md:905describes theSDKs collectively as MIT, which is not a per-package grant under an AGPL-3.0 repository.
self-hosting row but has no row of its own, so its Cloud-only status does not survive isolated
retrieval the way every other capability's does. Optional nit from the review.
Links
Files changed:
capabilities.mdx(renamed fromcapabilities-and-licensing.mdx)docs.jsonfeatures/interact.mdxEvidence packet:
agent-experience-deepinsights-cleanroom/artifacts/deep-insights-sep3-verification-20260904/Licensing draft for Legal:
scratchpad/product-prs/D2-capabilities-licensing-v2.md, section "Licensing draft (for Legal; notin repo)".