firecrawl 4.3.5 → 4.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ var require_package = __commonJS({
8
8
  "package.json"(exports, module) {
9
9
  module.exports = {
10
10
  name: "@mendable/firecrawl-js",
11
- version: "4.3.5",
11
+ version: "4.3.7",
12
12
  description: "JavaScript SDK for Firecrawl API",
13
13
  main: "dist/index.js",
14
14
  types: "dist/index.d.ts",
package/dist/index.cjs CHANGED
@@ -35,7 +35,7 @@ var require_package = __commonJS({
35
35
  "package.json"(exports2, module2) {
36
36
  module2.exports = {
37
37
  name: "@mendable/firecrawl-js",
38
- version: "4.3.5",
38
+ version: "4.3.7",
39
39
  description: "JavaScript SDK for Firecrawl API",
40
40
  main: "dist/index.js",
41
41
  types: "dist/index.d.ts",
@@ -173,7 +173,10 @@ var HttpClient = class {
173
173
  const cfg = { ...config };
174
174
  if (cfg.method && ["post", "put", "patch"].includes(cfg.method.toLowerCase())) {
175
175
  const data = cfg.data ?? {};
176
- cfg.data = { ...data, origin: `js-sdk@${version}` };
176
+ cfg.data = { ...data, origin: typeof data.origin === "string" && data.origin.includes("mcp") ? data.origin : `js-sdk@${version}` };
177
+ if (typeof data.timeout === "number") {
178
+ cfg.timeout = data.timeout + 5e3;
179
+ }
177
180
  }
178
181
  const res = await this.instance.request(cfg);
179
182
  if (res.status === 502 && attempt < this.maxRetries - 1) {
@@ -1218,7 +1221,7 @@ var FirecrawlApp = class {
1218
1221
  "Content-Type": "application/json",
1219
1222
  Authorization: `Bearer ${this.apiKey}`
1220
1223
  };
1221
- let jsonData = { url, ...params, origin: `js-sdk@${this.version}` };
1224
+ let jsonData = { url, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
1222
1225
  if (jsonData?.extract?.schema) {
1223
1226
  let schema = jsonData.extract.schema;
1224
1227
  try {
@@ -1292,7 +1295,7 @@ var FirecrawlApp = class {
1292
1295
  lang: params?.lang ?? "en",
1293
1296
  country: params?.country ?? "us",
1294
1297
  location: params?.location,
1295
- origin: `js-sdk@${this.version}`,
1298
+ origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}`,
1296
1299
  timeout: params?.timeout ?? 6e4,
1297
1300
  scrapeOptions: params?.scrapeOptions ?? { formats: [] }
1298
1301
  };
@@ -1352,7 +1355,7 @@ var FirecrawlApp = class {
1352
1355
  */
1353
1356
  async crawlUrl(url, params, pollInterval = 2, idempotencyKey) {
1354
1357
  const headers = this.prepareHeaders(idempotencyKey);
1355
- let jsonData = { url, ...params, origin: `js-sdk@${this.version}` };
1358
+ let jsonData = { url, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
1356
1359
  try {
1357
1360
  const response = await this.postRequest(
1358
1361
  this.apiUrl + `/v1/crawl`,
@@ -1376,7 +1379,7 @@ var FirecrawlApp = class {
1376
1379
  }
1377
1380
  async asyncCrawlUrl(url, params, idempotencyKey) {
1378
1381
  const headers = this.prepareHeaders(idempotencyKey);
1379
- let jsonData = { url, ...params, origin: `js-sdk@${this.version}` };
1382
+ let jsonData = { url, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
1380
1383
  try {
1381
1384
  const response = await this.postRequest(
1382
1385
  this.apiUrl + `/v1/crawl`,
@@ -1535,7 +1538,7 @@ var FirecrawlApp = class {
1535
1538
  */
1536
1539
  async mapUrl(url, params) {
1537
1540
  const headers = this.prepareHeaders();
1538
- let jsonData = { url, ...params, origin: `js-sdk@${this.version}` };
1541
+ let jsonData = { url, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
1539
1542
  try {
1540
1543
  const response = await this.postRequest(
1541
1544
  this.apiUrl + `/v1/map`,
@@ -1564,7 +1567,7 @@ var FirecrawlApp = class {
1564
1567
  */
1565
1568
  async batchScrapeUrls(urls, params, pollInterval = 2, idempotencyKey, webhook, ignoreInvalidURLs, maxConcurrency) {
1566
1569
  const headers = this.prepareHeaders(idempotencyKey);
1567
- let jsonData = { urls, webhook, ignoreInvalidURLs, maxConcurrency, ...params, origin: `js-sdk@${this.version}` };
1570
+ let jsonData = { urls, webhook, ignoreInvalidURLs, maxConcurrency, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
1568
1571
  if (jsonData?.extract?.schema) {
1569
1572
  let schema = jsonData.extract.schema;
1570
1573
  try {
@@ -1616,7 +1619,7 @@ var FirecrawlApp = class {
1616
1619
  }
1617
1620
  async asyncBatchScrapeUrls(urls, params, idempotencyKey, webhook, ignoreInvalidURLs) {
1618
1621
  const headers = this.prepareHeaders(idempotencyKey);
1619
- let jsonData = { urls, webhook, ignoreInvalidURLs, ...params, origin: `js-sdk@${this.version}` };
1622
+ let jsonData = { urls, webhook, ignoreInvalidURLs, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
1620
1623
  try {
1621
1624
  const response = await this.postRequest(
1622
1625
  this.apiUrl + `/v1/batch/scrape`,
@@ -1772,7 +1775,7 @@ var FirecrawlApp = class {
1772
1775
  try {
1773
1776
  const response = await this.postRequest(
1774
1777
  this.apiUrl + `/v1/extract`,
1775
- { ...jsonData, schema: jsonSchema, origin: `js-sdk@${this.version}` },
1778
+ { ...jsonData, schema: jsonSchema, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` },
1776
1779
  headers
1777
1780
  );
1778
1781
  if (response.status === 200) {
@@ -1836,7 +1839,7 @@ var FirecrawlApp = class {
1836
1839
  try {
1837
1840
  const response = await this.postRequest(
1838
1841
  this.apiUrl + `/v1/extract`,
1839
- { ...jsonData, schema: jsonSchema, origin: `js-sdk@${this.version}` },
1842
+ { ...jsonData, schema: jsonSchema, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` },
1840
1843
  headers
1841
1844
  );
1842
1845
  if (response.status === 200) {
@@ -2112,7 +2115,7 @@ var FirecrawlApp = class {
2112
2115
  */
2113
2116
  async asyncDeepResearch(query, params) {
2114
2117
  const headers = this.prepareHeaders();
2115
- let jsonData = { query, ...params, origin: `js-sdk@${this.version}` };
2118
+ let jsonData = { query, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
2116
2119
  if (jsonData?.jsonOptions?.schema) {
2117
2120
  let schema = jsonData.jsonOptions.schema;
2118
2121
  try {
@@ -2235,7 +2238,7 @@ var FirecrawlApp = class {
2235
2238
  async __asyncDeepResearch(topic, params) {
2236
2239
  const headers = this.prepareHeaders();
2237
2240
  try {
2238
- let jsonData = { topic, ...params, origin: `js-sdk@${this.version}` };
2241
+ let jsonData = { topic, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
2239
2242
  const response = await this.postRequest(
2240
2243
  `${this.apiUrl}/v1/deep-research`,
2241
2244
  jsonData,
@@ -2333,7 +2336,7 @@ var FirecrawlApp = class {
2333
2336
  */
2334
2337
  async asyncGenerateLLMsText(url, params) {
2335
2338
  const headers = this.prepareHeaders();
2336
- let jsonData = { url, ...params, origin: `js-sdk@${this.version}` };
2339
+ let jsonData = { url, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
2337
2340
  try {
2338
2341
  const response = await this.postRequest(
2339
2342
  `${this.apiUrl}/v1/llmstxt`,
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  require_package
3
- } from "./chunk-FDVSGUK2.js";
3
+ } from "./chunk-VMAQHKH3.js";
4
4
 
5
5
  // src/v2/utils/httpClient.ts
6
6
  import axios from "axios";
@@ -57,7 +57,10 @@ var HttpClient = class {
57
57
  const cfg = { ...config };
58
58
  if (cfg.method && ["post", "put", "patch"].includes(cfg.method.toLowerCase())) {
59
59
  const data = cfg.data ?? {};
60
- cfg.data = { ...data, origin: `js-sdk@${version}` };
60
+ cfg.data = { ...data, origin: typeof data.origin === "string" && data.origin.includes("mcp") ? data.origin : `js-sdk@${version}` };
61
+ if (typeof data.timeout === "number") {
62
+ cfg.timeout = data.timeout + 5e3;
63
+ }
61
64
  }
62
65
  const res = await this.instance.request(cfg);
63
66
  if (res.status === 502 && attempt < this.maxRetries - 1) {
@@ -1065,7 +1068,7 @@ var FirecrawlApp = class {
1065
1068
  if (typeof process !== "undefined" && process.env && process.env.npm_package_version) {
1066
1069
  return process.env.npm_package_version;
1067
1070
  }
1068
- const packageJson = await import("./package-NC4JMKLV.js");
1071
+ const packageJson = await import("./package-XWA4UHUW.js");
1069
1072
  return packageJson.default.version;
1070
1073
  } catch (error) {
1071
1074
  const isTest = typeof process !== "undefined" && (process.env.JEST_WORKER_ID != null || false);
@@ -1102,7 +1105,7 @@ var FirecrawlApp = class {
1102
1105
  "Content-Type": "application/json",
1103
1106
  Authorization: `Bearer ${this.apiKey}`
1104
1107
  };
1105
- let jsonData = { url, ...params, origin: `js-sdk@${this.version}` };
1108
+ let jsonData = { url, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
1106
1109
  if (jsonData?.extract?.schema) {
1107
1110
  let schema = jsonData.extract.schema;
1108
1111
  try {
@@ -1176,7 +1179,7 @@ var FirecrawlApp = class {
1176
1179
  lang: params?.lang ?? "en",
1177
1180
  country: params?.country ?? "us",
1178
1181
  location: params?.location,
1179
- origin: `js-sdk@${this.version}`,
1182
+ origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}`,
1180
1183
  timeout: params?.timeout ?? 6e4,
1181
1184
  scrapeOptions: params?.scrapeOptions ?? { formats: [] }
1182
1185
  };
@@ -1236,7 +1239,7 @@ var FirecrawlApp = class {
1236
1239
  */
1237
1240
  async crawlUrl(url, params, pollInterval = 2, idempotencyKey) {
1238
1241
  const headers = this.prepareHeaders(idempotencyKey);
1239
- let jsonData = { url, ...params, origin: `js-sdk@${this.version}` };
1242
+ let jsonData = { url, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
1240
1243
  try {
1241
1244
  const response = await this.postRequest(
1242
1245
  this.apiUrl + `/v1/crawl`,
@@ -1260,7 +1263,7 @@ var FirecrawlApp = class {
1260
1263
  }
1261
1264
  async asyncCrawlUrl(url, params, idempotencyKey) {
1262
1265
  const headers = this.prepareHeaders(idempotencyKey);
1263
- let jsonData = { url, ...params, origin: `js-sdk@${this.version}` };
1266
+ let jsonData = { url, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
1264
1267
  try {
1265
1268
  const response = await this.postRequest(
1266
1269
  this.apiUrl + `/v1/crawl`,
@@ -1419,7 +1422,7 @@ var FirecrawlApp = class {
1419
1422
  */
1420
1423
  async mapUrl(url, params) {
1421
1424
  const headers = this.prepareHeaders();
1422
- let jsonData = { url, ...params, origin: `js-sdk@${this.version}` };
1425
+ let jsonData = { url, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
1423
1426
  try {
1424
1427
  const response = await this.postRequest(
1425
1428
  this.apiUrl + `/v1/map`,
@@ -1448,7 +1451,7 @@ var FirecrawlApp = class {
1448
1451
  */
1449
1452
  async batchScrapeUrls(urls, params, pollInterval = 2, idempotencyKey, webhook, ignoreInvalidURLs, maxConcurrency) {
1450
1453
  const headers = this.prepareHeaders(idempotencyKey);
1451
- let jsonData = { urls, webhook, ignoreInvalidURLs, maxConcurrency, ...params, origin: `js-sdk@${this.version}` };
1454
+ let jsonData = { urls, webhook, ignoreInvalidURLs, maxConcurrency, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
1452
1455
  if (jsonData?.extract?.schema) {
1453
1456
  let schema = jsonData.extract.schema;
1454
1457
  try {
@@ -1500,7 +1503,7 @@ var FirecrawlApp = class {
1500
1503
  }
1501
1504
  async asyncBatchScrapeUrls(urls, params, idempotencyKey, webhook, ignoreInvalidURLs) {
1502
1505
  const headers = this.prepareHeaders(idempotencyKey);
1503
- let jsonData = { urls, webhook, ignoreInvalidURLs, ...params, origin: `js-sdk@${this.version}` };
1506
+ let jsonData = { urls, webhook, ignoreInvalidURLs, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
1504
1507
  try {
1505
1508
  const response = await this.postRequest(
1506
1509
  this.apiUrl + `/v1/batch/scrape`,
@@ -1656,7 +1659,7 @@ var FirecrawlApp = class {
1656
1659
  try {
1657
1660
  const response = await this.postRequest(
1658
1661
  this.apiUrl + `/v1/extract`,
1659
- { ...jsonData, schema: jsonSchema, origin: `js-sdk@${this.version}` },
1662
+ { ...jsonData, schema: jsonSchema, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` },
1660
1663
  headers
1661
1664
  );
1662
1665
  if (response.status === 200) {
@@ -1720,7 +1723,7 @@ var FirecrawlApp = class {
1720
1723
  try {
1721
1724
  const response = await this.postRequest(
1722
1725
  this.apiUrl + `/v1/extract`,
1723
- { ...jsonData, schema: jsonSchema, origin: `js-sdk@${this.version}` },
1726
+ { ...jsonData, schema: jsonSchema, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` },
1724
1727
  headers
1725
1728
  );
1726
1729
  if (response.status === 200) {
@@ -1996,7 +1999,7 @@ var FirecrawlApp = class {
1996
1999
  */
1997
2000
  async asyncDeepResearch(query, params) {
1998
2001
  const headers = this.prepareHeaders();
1999
- let jsonData = { query, ...params, origin: `js-sdk@${this.version}` };
2002
+ let jsonData = { query, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
2000
2003
  if (jsonData?.jsonOptions?.schema) {
2001
2004
  let schema = jsonData.jsonOptions.schema;
2002
2005
  try {
@@ -2119,7 +2122,7 @@ var FirecrawlApp = class {
2119
2122
  async __asyncDeepResearch(topic, params) {
2120
2123
  const headers = this.prepareHeaders();
2121
2124
  try {
2122
- let jsonData = { topic, ...params, origin: `js-sdk@${this.version}` };
2125
+ let jsonData = { topic, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
2123
2126
  const response = await this.postRequest(
2124
2127
  `${this.apiUrl}/v1/deep-research`,
2125
2128
  jsonData,
@@ -2217,7 +2220,7 @@ var FirecrawlApp = class {
2217
2220
  */
2218
2221
  async asyncGenerateLLMsText(url, params) {
2219
2222
  const headers = this.prepareHeaders();
2220
- let jsonData = { url, ...params, origin: `js-sdk@${this.version}` };
2223
+ let jsonData = { url, ...params, origin: typeof params.origin === "string" && params.origin.includes("mcp") ? params.origin : `js-sdk@${this.version}` };
2221
2224
  try {
2222
2225
  const response = await this.postRequest(
2223
2226
  `${this.apiUrl}/v1/llmstxt`,
@@ -1,4 +1,4 @@
1
1
  import {
2
2
  require_package
3
- } from "./chunk-FDVSGUK2.js";
3
+ } from "./chunk-VMAQHKH3.js";
4
4
  export default require_package();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "firecrawl",
3
- "version": "4.3.5",
3
+ "version": "4.3.7",
4
4
  "description": "JavaScript SDK for Firecrawl API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/v1/index.ts CHANGED
@@ -700,7 +700,7 @@ export default class FirecrawlApp {
700
700
  "Content-Type": "application/json",
701
701
  Authorization: `Bearer ${this.apiKey}`,
702
702
  } as AxiosRequestHeaders;
703
- let jsonData: any = { url, ...params, origin: `js-sdk@${this.version}` };
703
+ let jsonData: any = { url, ...params, origin: typeof (params as any).origin === "string" && (params as any).origin.includes("mcp") ? (params as any).origin : `js-sdk@${this.version}` };
704
704
  if (jsonData?.extract?.schema) {
705
705
  let schema = jsonData.extract.schema;
706
706
 
@@ -782,7 +782,7 @@ export default class FirecrawlApp {
782
782
  lang: params?.lang ?? "en",
783
783
  country: params?.country ?? "us",
784
784
  location: params?.location,
785
- origin: `js-sdk@${this.version}`,
785
+ origin: typeof (params as any).origin === "string" && (params as any).origin.includes("mcp") ? (params as any).origin : `js-sdk@${this.version}`,
786
786
  timeout: params?.timeout ?? 60000,
787
787
  scrapeOptions: params?.scrapeOptions ?? { formats: [] },
788
788
  };
@@ -854,7 +854,7 @@ export default class FirecrawlApp {
854
854
  idempotencyKey?: string
855
855
  ): Promise<CrawlStatusResponse | ErrorResponse> {
856
856
  const headers = this.prepareHeaders(idempotencyKey);
857
- let jsonData: any = { url, ...params, origin: `js-sdk@${this.version}` };
857
+ let jsonData: any = { url, ...params, origin: typeof (params as any).origin === "string" && (params as any).origin.includes("mcp") ? (params as any).origin : `js-sdk@${this.version}` };
858
858
  try {
859
859
  const response: AxiosResponse = await this.postRequest(
860
860
  this.apiUrl + `/v1/crawl`,
@@ -883,7 +883,7 @@ export default class FirecrawlApp {
883
883
  idempotencyKey?: string
884
884
  ): Promise<CrawlResponse | ErrorResponse> {
885
885
  const headers = this.prepareHeaders(idempotencyKey);
886
- let jsonData: any = { url, ...params, origin: `js-sdk@${this.version}` };
886
+ let jsonData: any = { url, ...params, origin: typeof (params as any).origin === "string" && (params as any).origin.includes("mcp") ? (params as any).origin : `js-sdk@${this.version}` };
887
887
  try {
888
888
  const response: AxiosResponse = await this.postRequest(
889
889
  this.apiUrl + `/v1/crawl`,
@@ -1059,7 +1059,7 @@ export default class FirecrawlApp {
1059
1059
  */
1060
1060
  async mapUrl(url: string, params?: MapParams): Promise<MapResponse | ErrorResponse> {
1061
1061
  const headers = this.prepareHeaders();
1062
- let jsonData: any = { url, ...params, origin: `js-sdk@${this.version}` };
1062
+ let jsonData: any = { url, ...params, origin: typeof (params as any).origin === "string" && (params as any).origin.includes("mcp") ? (params as any).origin : `js-sdk@${this.version}` };
1063
1063
 
1064
1064
  try {
1065
1065
  const response: AxiosResponse = await this.postRequest(
@@ -1098,7 +1098,7 @@ export default class FirecrawlApp {
1098
1098
  maxConcurrency?: number,
1099
1099
  ): Promise<BatchScrapeStatusResponse | ErrorResponse> {
1100
1100
  const headers = this.prepareHeaders(idempotencyKey);
1101
- let jsonData: any = { urls, webhook, ignoreInvalidURLs, maxConcurrency, ...params, origin: `js-sdk@${this.version}` };
1101
+ let jsonData: any = { urls, webhook, ignoreInvalidURLs, maxConcurrency, ...params, origin: typeof (params as any).origin === "string" && (params as any).origin.includes("mcp") ? (params as any).origin : `js-sdk@${this.version}` };
1102
1102
  if (jsonData?.extract?.schema) {
1103
1103
  let schema = jsonData.extract.schema;
1104
1104
 
@@ -1163,7 +1163,7 @@ export default class FirecrawlApp {
1163
1163
  ignoreInvalidURLs?: boolean,
1164
1164
  ): Promise<BatchScrapeResponse | ErrorResponse> {
1165
1165
  const headers = this.prepareHeaders(idempotencyKey);
1166
- let jsonData: any = { urls, webhook, ignoreInvalidURLs, ...params, origin: `js-sdk@${this.version}` };
1166
+ let jsonData: any = { urls, webhook, ignoreInvalidURLs, ...params, origin: typeof (params as any).origin === "string" && (params as any).origin.includes("mcp") ? (params as any).origin : `js-sdk@${this.version}` };
1167
1167
  try {
1168
1168
  const response: AxiosResponse = await this.postRequest(
1169
1169
  this.apiUrl + `/v1/batch/scrape`,
@@ -1339,7 +1339,7 @@ export default class FirecrawlApp {
1339
1339
  try {
1340
1340
  const response: AxiosResponse = await this.postRequest(
1341
1341
  this.apiUrl + `/v1/extract`,
1342
- { ...jsonData, schema: jsonSchema, origin: `js-sdk@${this.version}` },
1342
+ { ...jsonData, schema: jsonSchema, origin: typeof (params as any).origin === "string" && (params as any).origin.includes("mcp") ? (params as any).origin : `js-sdk@${this.version}` },
1343
1343
  headers
1344
1344
  );
1345
1345
 
@@ -1411,7 +1411,7 @@ export default class FirecrawlApp {
1411
1411
  try {
1412
1412
  const response: AxiosResponse = await this.postRequest(
1413
1413
  this.apiUrl + `/v1/extract`,
1414
- { ...jsonData, schema: jsonSchema, origin: `js-sdk@${this.version}` },
1414
+ { ...jsonData, schema: jsonSchema, origin: typeof (params as any).origin === "string" && (params as any).origin.includes("mcp") ? (params as any).origin : `js-sdk@${this.version}` },
1415
1415
  headers
1416
1416
  );
1417
1417
 
@@ -1772,7 +1772,7 @@ export default class FirecrawlApp {
1772
1772
  */
1773
1773
  async asyncDeepResearch(query: string, params: DeepResearchParams<zt.ZodSchema>): Promise<DeepResearchResponse | ErrorResponse> {
1774
1774
  const headers = this.prepareHeaders();
1775
- let jsonData: any = { query, ...params, origin: `js-sdk@${this.version}` };
1775
+ let jsonData: any = { query, ...params, origin: typeof (params as any).origin === "string" && (params as any).origin.includes("mcp") ? (params as any).origin : `js-sdk@${this.version}` };
1776
1776
 
1777
1777
  if (jsonData?.jsonOptions?.schema) {
1778
1778
  let schema = jsonData.jsonOptions.schema;
@@ -1926,7 +1926,7 @@ export default class FirecrawlApp {
1926
1926
  async __asyncDeepResearch(topic: string, params: DeepResearchParams): Promise<DeepResearchResponse | ErrorResponse> {
1927
1927
  const headers = this.prepareHeaders();
1928
1928
  try {
1929
- let jsonData: any = { topic, ...params, origin: `js-sdk@${this.version}` };
1929
+ let jsonData: any = { topic, ...params, origin: typeof (params as any).origin === "string" && (params as any).origin.includes("mcp") ? (params as any).origin : `js-sdk@${this.version}` };
1930
1930
  const response: AxiosResponse = await this.postRequest(
1931
1931
  `${this.apiUrl}/v1/deep-research`,
1932
1932
  jsonData,
@@ -2039,7 +2039,7 @@ export default class FirecrawlApp {
2039
2039
  */
2040
2040
  async asyncGenerateLLMsText(url: string, params?: GenerateLLMsTextParams): Promise<GenerateLLMsTextResponse | ErrorResponse> {
2041
2041
  const headers = this.prepareHeaders();
2042
- let jsonData: any = { url, ...params, origin: `js-sdk@${this.version}` };
2042
+ let jsonData: any = { url, ...params, origin: typeof (params as any).origin === "string" && (params as any).origin.includes("mcp") ? (params as any).origin : `js-sdk@${this.version}` };
2043
2043
  try {
2044
2044
  const response: AxiosResponse = await this.postRequest(
2045
2045
  `${this.apiUrl}/v1/llmstxt`,
@@ -53,7 +53,12 @@ export class HttpClient {
53
53
  // For POST/PUT, ensure origin is present in JSON body too
54
54
  if (cfg.method && ["post", "put", "patch"].includes(cfg.method.toLowerCase())) {
55
55
  const data = (cfg.data ?? {}) as Record<string, unknown>;
56
- cfg.data = { ...data, origin: `js-sdk@${version}` };
56
+ cfg.data = { ...data, origin: typeof data.origin === "string" && data.origin.includes("mcp") ? data.origin : `js-sdk@${version}` };
57
+
58
+ // If timeout is specified in the body, use it to override the request timeout
59
+ if (typeof data.timeout === "number") {
60
+ cfg.timeout = data.timeout + 5000;
61
+ }
57
62
  }
58
63
  const res = await this.instance.request<T>(cfg);
59
64
  if (res.status === 502 && attempt < this.maxRetries - 1) {