diff --git a/README.md b/README.md index 8ce8c809..2e1f0bdc 100644 --- a/README.md +++ b/README.md @@ -1287,7 +1287,7 @@ The existing `firecrawl_feedback` tool accepts `endpoint: "alexandria"`: } ``` -`objective` is the underlying goal of the session: what the agent or its user was ultimately trying to accomplish, beyond the single website in `requestedWebsite`. +The optional `objective` is the underlying goal of the session: what the agent or its user was ultimately trying to accomplish, beyond the single website in `requestedWebsite`. This uses authenticated `POST /v2/feedback`, without a job ID, job-age deadline, or credit refund. Optional `providerFeedback` and `capabilityFeedback` arrays describe coverage gaps and execution issues; the tool schema lists supported issue values. A `new_capability_request` requires `requestedFunctionality`; `missing_capability` (the provider exists but lacks the capability) does not. Existing feedback opt-out and authentication controls apply. diff --git a/gemini-extension.json b/gemini-extension.json index 2c8d4fa8..15a06afd 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,6 +1,6 @@ { "name": "firecrawl", - "version": "3.27.2", + "version": "3.27.3", "description": "Official Firecrawl MCP for web search, scraping, crawling, and structured data extraction.", "mcpServers": { "firecrawl": { diff --git a/package.json b/package.json index 372bca4c..0b07fd58 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "firecrawl-mcp", - "version": "3.27.2", + "version": "3.27.3", "description": "MCP server for Firecrawl — search, scrape, and interact with the web, and search scientific papers. Supports both cloud and self-hosted instances. Features include web search, scraping, page interaction, batch processing, LLM-powered content analysis, and research paper search over biomedical and arXiv literature (PubMed, bioRxiv, medRxiv, arXiv) with citation-graph expansion and full-text reading.", "type": "module", "mcpName": "io.github.firecrawl/firecrawl-mcp-server", diff --git a/src/alexandria-feedback.ts b/src/alexandria-feedback.ts index bc4871dc..9976865e 100644 --- a/src/alexandria-feedback.ts +++ b/src/alexandria-feedback.ts @@ -102,5 +102,4 @@ export const alexandriaSessionFeedbackSchema = z.strictObject({ ...alexandriaFeedbackFields, requestedWebsite: alexandriaFeedbackFields.requestedWebsite.unwrap(), rationale: detail, - objective: detail, }); diff --git a/tests/mcp-smoke.test.mjs b/tests/mcp-smoke.test.mjs index 69cf13c5..47afff78 100644 --- a/tests/mcp-smoke.test.mjs +++ b/tests/mcp-smoke.test.mjs @@ -1891,10 +1891,14 @@ test('stdio transport calls Firecrawl API through a tool end to end', async (t) assert.notEqual(missingCapabilityResult.isError, true); const sentMissingCapability = fakeApi.requests.filter(request => request.url === '/v2/feedback').at(-1).body; assert.deepEqual(sentMissingCapability, { ...missingCapabilityFeedback, origin: sentMissingCapability.origin }); + const { objective: _objective, ...withoutObjective } = sessionFeedback; + const withoutObjectiveResult = await client.request('tools/call', { name: 'firecrawl_feedback', arguments: withoutObjective }); + assert.notEqual(withoutObjectiveResult.isError, true); + const sentWithoutObjective = fakeApi.requests.filter(request => request.url === '/v2/feedback').at(-1).body; + assert.deepEqual(sentWithoutObjective, { ...withoutObjective, origin: sentWithoutObjective.origin }); for (const invalid of [ { endpoint: 'scrape', rating: 'good' }, { endpoint: 'alexandria', rating: 'good' }, - { ...sessionFeedback, objective: undefined }, { ...sessionFeedback, objective: ' ' }, { ...sessionFeedback, jobId: '00000000-0000-4000-8000-000000000010' }, { ...sessionFeedback, capabilityFeedback: [{ name: 'attachments', provider: 'example', issue: 'new_capability_request', why: 'Missing attachments' }] },