You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`Not in the developer index, so no query scoped to ${missing.length>1 ? "them" : "it"} can ever match: ${missing.join(", ")}. Drop the scope and search the whole index, or use the Firecrawl CLI for the open web.`,
"Artifact kinds to search. Defaults to all four; narrowing here is the cheapest way to sharpen a query",
),
repos: z
.array(z.string())
.optional()
.describe("Scope the repository half (issue, pull_request, readme) to these owner/name slugs"),
sources: z
.array(z.string())
.optional()
.describe(
"Scope the documentation half (doc) to these source ids, at most 20. Unions with repos rather than intersecting",
),
passages: z
.number()
.min(1)
.max(5)
.default(1)
.describe(
"Maximum passages per result. Raise when a page is clearly right but the first passage is the wrong part of it",
),
});
exportconstdeveloperSearch={
name: "firecrawl_developer_search",
description: `Search a curated index of GitHub issues, merged pull requests, READMEs, and library documentation, returning the matched passages as markdown.
Reach for this before a web search whenever the question is how a library or API behaves, what an error message means, whether a bug was fixed, or what an API contract guarantees. It answers from the primary source: the issue where the bug was reported, the merged PR that fixed it, the doc page that defines the contract. A blog post describing a behaviour is a weaker answer than the passage defining it.
Matching the query to the question:
- Literal error string or stack trace: search the string plus the library name with types ["issue", "pull_request"]. If nothing matches, strip the volatile parts (paths, line numbers, ids) and retry; the invariant middle of the message is what is indexed.
- Conceptual "how do I do X": ask the full question in natural language across all types. Raise passages before raising k.
- Known bug: the issue reports it, the merged pull request fixes it, and the fix is what you want. Search ["issue", "pull_request"], then re-query the issue's own terms scoped to its repo with types ["pull_request"].
- API contract ("what does X return", "is Y required", "what is the default"): types ["readme", "doc"].
- Version-specific behaviour: an issue's opening report describes the broken version and its resolution supersedes it, so read the resolution before answering.
- Scoped to one library: repos ["owner/name"]. If a scoped search comes back empty, read the "Not indexed" note before rephrasing.
Search broadly first, then narrow with types or repos once you have seen what the hits look like; scoping first hides the result that would have told you where to look. Quote the passages and cite the url, falling back to the url when a doc result has no title. When the index has nothing to say, comparisons, opinion, news, or an unindexed project, use the Firecrawl CLI to search or scrape the open web instead.`,
input,
// Keyless by default; a key only raises the rate limit.