mcp-scraper 0.15.0 → 0.16.0

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.
@@ -7,7 +7,7 @@ import {
7
7
  registerMemoryMcpTools,
8
8
  registerPaaExtractorMcpTools,
9
9
  registerSerpIntelligenceCaptureTools
10
- } from "../chunk-ETJBTYZX.js";
10
+ } from "../chunk-YIV4IKFG.js";
11
11
  import "../chunk-R7EETU7Z.js";
12
12
  import "../chunk-HPV4VOQX.js";
13
13
  import {
@@ -16,7 +16,7 @@ import {
16
16
  import "../chunk-XGIPATLV.js";
17
17
  import {
18
18
  PACKAGE_VERSION
19
- } from "../chunk-TK2S2M7G.js";
19
+ } from "../chunk-HQYIP5X3.js";
20
20
  import "../chunk-HL33CGJF.js";
21
21
  import "../chunk-M2S27J6Z.js";
22
22
 
@@ -0,0 +1,7 @@
1
+ // src/version.ts
2
+ var PACKAGE_VERSION = "0.16.0";
3
+
4
+ export {
5
+ PACKAGE_VERSION
6
+ };
7
+ //# sourceMappingURL=chunk-HQYIP5X3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/version.ts"],"sourcesContent":["export const PACKAGE_VERSION = '0.16.0'\n"],"mappings":";AAAO,IAAM,kBAAkB;","names":[]}
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-XGIPATLV.js";
18
18
  import {
19
19
  PACKAGE_VERSION
20
- } from "./chunk-TK2S2M7G.js";
20
+ } from "./chunk-HQYIP5X3.js";
21
21
  import {
22
22
  MC_PER_CREDIT
23
23
  } from "./chunk-HL33CGJF.js";
@@ -4057,6 +4057,9 @@ var ListServiceConnectionsOutputSchema = {
4057
4057
  readTools: z.array(z.string()).describe("Tool names this connection can be read with via read_service_connection."),
4058
4058
  actionTools: z.array(z.string()).describe("Explicitly allowlisted write or mutation tool names callable through call_service_connection_action after actions are enabled for this connection."),
4059
4059
  adminBlockedTools: z.array(z.string()).describe("Credential, OAuth-grant, or other administrative tools permanently blocked from the MCP and scheduler."),
4060
+ mcpEndpoint: z.string().url().nullable().describe("Authenticated connection-scoped MCP endpoint when native provider tools/list projection is available. Null means use describe_service_connection_tool on this root MCP."),
4061
+ schemaDiscovery: z.enum(["connection_tools_list", "compatibility_describe"]).describe("How clients discover this connection's exact live provider schemas."),
4062
+ toolRevision: z.string().nullable().describe("Opaque revision of the resolved live tool catalog, when available. It changes when provider tools or policy change."),
4060
4063
  vaultName: z.string().nullable().describe("Memory vault this connection's digest writes into, if it has run at least once. Search it with memory-search."),
4061
4064
  tableName: z.string().nullable().describe("Table this connection's digest writes structured rows into, if it has run at least once. Query it with table-query.")
4062
4065
  }))
@@ -4073,7 +4076,8 @@ var ReadServiceConnectionOutputSchema = {
4073
4076
  };
4074
4077
  var DescribeServiceConnectionToolInputSchema = {
4075
4078
  connectionId: z.string().min(1).describe("A tenant-owned connectionId from list_service_connections."),
4076
- tool: z.string().min(1).describe("One exact name from that connection's readTools or actionTools. Admin-blocked and arbitrary names are rejected.")
4079
+ tool: z.string().min(1).describe("One exact name from that connection's readTools or actionTools. Admin-blocked and arbitrary names are rejected."),
4080
+ fresh: z.boolean().optional().describe("Bypass the short-lived sanitized schema cache. Ownership, connection state, and tool policy are still rechecked; use only when a provider tool catalog just changed.")
4077
4081
  };
4078
4082
  var DescribeServiceConnectionToolOutputSchema = {
4079
4083
  ok: z.boolean(),
@@ -4082,8 +4086,33 @@ var DescribeServiceConnectionToolOutputSchema = {
4082
4086
  title: NullableString,
4083
4087
  description: NullableString,
4084
4088
  classification: z.enum(["read", "action"]),
4085
- inputSchema: z.record(z.string(), z.unknown()).describe("JSON Schema for the exact connected-provider tool arguments.")
4089
+ callable: z.boolean().optional().describe("Whether the tool is callable now. A gated action can be described while actions are off and return false."),
4090
+ blockedReason: z.enum(["actions_disabled", "inactive_connection"]).nullable().optional(),
4091
+ transport: z.enum(["nango", "remote_mcp"]).optional(),
4092
+ providerConfigKey: z.string().optional(),
4093
+ protocolVersion: NullableString.optional(),
4094
+ schemaSource: z.literal("live_tools_list").optional(),
4095
+ inputSchema: z.record(z.string(), z.unknown()).describe("JSON Schema for the exact connected-provider tool arguments."),
4096
+ outputSchema: z.record(z.string(), z.unknown()).optional().describe("Provider-native JSON output schema when the live MCP tool publishes one."),
4097
+ annotations: z.object({
4098
+ title: z.string().optional(),
4099
+ readOnlyHint: z.boolean().optional(),
4100
+ destructiveHint: z.boolean().optional(),
4101
+ idempotentHint: z.boolean().optional(),
4102
+ openWorldHint: z.boolean().optional()
4103
+ }).optional(),
4104
+ icons: z.array(z.object({
4105
+ src: z.string(),
4106
+ mimeType: z.string().optional(),
4107
+ sizes: z.array(z.string()).optional(),
4108
+ theme: z.enum(["light", "dark"]).optional()
4109
+ })).optional(),
4110
+ execution: z.object({ taskSupport: z.enum(["forbidden", "optional", "required"]) }).optional(),
4111
+ schemaHash: z.string().optional().describe("SHA-256 of the sanitized live Tool definition."),
4112
+ fetchedAt: z.string().optional()
4086
4113
  }).optional(),
4114
+ retryable: z.boolean().optional(),
4115
+ errorCode: z.string().optional(),
4087
4116
  error: NullableString
4088
4117
  };
4089
4118
  var ConnectedDataContinuationSchema = z.object({
@@ -4891,7 +4920,7 @@ function registerPaaExtractorMcpTools(server, executor, options = {}) {
4891
4920
  }, async (input) => formatCreditsInfo(await executor.creditsInfo(input), input));
4892
4921
  server.registerTool("list_service_connections", {
4893
4922
  title: "List Connected Services",
4894
- description: "List every third-party service connection this MCP Scraper account has authorized, including Resend, GitHub, Google Analytics, YouTube, Facebook Pages, LinkedIn, X, Meta Marketing, Slack, Gmail, Calendar, Drive, Zoom, Xero, and others. Returns the tenant-scoped connectionId, credential transport, exact readTools and actionTools, and permanently blocked administrative tools. Get a connectionId and exact tool name here before calling read_service_connection or call_service_connection_action. Nango OAuth and official remote MCP connections use the same provider-neutral bridges; mutations still require the account action switch and an exact allowed action. For already-digested history, prefer the returned vaultName or tableName.",
4923
+ description: "List every third-party service connection this MCP Scraper account has authorized, including Resend, GitHub, Google Analytics, YouTube, Facebook Pages, LinkedIn, X, Meta Marketing, Slack, Gmail, Calendar, Google Drive, Zoom, Xero, and others. Returns the tenant-scoped connectionId, credential transport, exact live readTools and gated actionTools, permanently blocked administrative tools, and schema-discovery metadata. Get a connectionId and exact tool name here before calling describe_service_connection_tool, read_service_connection, or call_service_connection_action. Nango OAuth and official remote MCP connections use the same provider-neutral bridges; mutations still require the account action switch and an exact allowed action. For already-digested history, prefer the returned vaultName or tableName.",
4895
4924
  inputSchema: ListServiceConnectionsInputSchema,
4896
4925
  outputSchema: recordOutputSchema("list_service_connections", ListServiceConnectionsOutputSchema),
4897
4926
  annotations: { title: "List Connected Services", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
@@ -4926,14 +4955,14 @@ function registerPaaExtractorMcpTools(server, executor, options = {}) {
4926
4955
  }, async (input) => executor.zoomCreateMeeting(input));
4927
4956
  server.registerTool("read_service_connection", {
4928
4957
  title: "Read Connected Service",
4929
- description: "Call one small live, read-only operation on any connected service, including Resend, GitHub repository, issue, pull-request, release, and workflow reads. Do not loop this tool to fetch a time range or collection: use export_connected_service_data for Gmail, calendar, Zoom, or Resend datasets. Requires a connectionId and an exact name from that connection's readTools in list_service_connections; an unlisted tool is rejected server-side.",
4958
+ description: "Call one small live, read-only operation on any connected service, including Google Drive metadata/search tools, Resend, GitHub, Gmail, Calendar, Zoom, and other approved providers. Call describe_service_connection_tool first when arguments are not already known. Do not loop this tool once per file or record to fetch a corpus: use export_connected_service_data when that provider/dataset supports bulk delivery. Requires a connectionId and an exact name from that connection's live readTools in list_service_connections; an unlisted tool is rejected server-side.",
4930
4959
  inputSchema: ReadServiceConnectionInputSchema,
4931
4960
  outputSchema: recordOutputSchema("read_service_connection", ReadServiceConnectionOutputSchema),
4932
4961
  annotations: { title: "Read Connected Service", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }
4933
4962
  }, async (input) => executor.readServiceConnection(input));
4934
4963
  server.registerTool("describe_service_connection_tool", {
4935
4964
  title: "Describe Connected Service Tool",
4936
- description: "Get the title, description, read/action classification, and exact JSON input schema for one tool exposed by a tenant-owned service connection. Call list_service_connections first, then describe the selected readTools or actionTools name before constructing arguments. Arbitrary names and permanently blocked administrative tools are rejected. This is especially useful for broad official remote MCP connections such as Resend, whose provider-native tools are intentionally exposed through generic bridges instead of dozens of new top-level MCP names.",
4965
+ description: "Fetch the sanitized live MCP Tool definition for one exact tool exposed by a tenant-owned Nango OAuth or official remote MCP connection. Returns provider-native title, description, read/action classification, current callability, input schema, optional output schema, safe annotations, and a schema hash. Call list_service_connections first, then describe a listed readTools or actionTools name before constructing arguments. This is a compatibility tool on MCP Scraper's fixed root MCP; protocol-native connection endpoints discover the same definitions through MCP tools/list, not a custom tools/describe method. Arbitrary names and permanently blocked administrative tools are rejected.",
4937
4966
  inputSchema: DescribeServiceConnectionToolInputSchema,
4938
4967
  outputSchema: recordOutputSchema("describe_service_connection_tool", DescribeServiceConnectionToolOutputSchema),
4939
4968
  annotations: { title: "Describe Connected Service Tool", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
@@ -4954,7 +4983,7 @@ function registerPaaExtractorMcpTools(server, executor, options = {}) {
4954
4983
  }, async (input) => executor.renewConnectedDataDownload(input));
4955
4984
  server.registerTool("call_service_connection_action", {
4956
4985
  title: "Run Connected Service Action",
4957
- description: "Run one explicitly allowlisted write or mutation on a tenant-owned OAuth or remote MCP connection. First call list_service_connections, use a connection with actionsEnabled true, choose one exact actionTools entry, and supply that action's arguments. The server rejects arbitrary action names, inactive or foreign connections, disabled actions, and every adminBlockedTools entry. This includes Resend sends, broadcasts, contacts and templates plus GitHub issue, pull-request, repository-content, release, and workflow actions when exposed. Sends, deletes, merges, review submissions, workflow execution, and content changes are high impact.",
4986
+ description: "Run one explicitly allowlisted write or mutation on a tenant-owned OAuth or remote MCP connection. First call list_service_connections, use a connection with actionsEnabled true, describe the exact actionTools entry to obtain its live schema, and supply only that action's arguments. The server rejects arbitrary action names, inactive or foreign connections, disabled actions, and every adminBlockedTools entry. This can include Google Drive folder creation or file copies, Resend delivery, and GitHub mutations only when those exact actions are live and approved. Sends, deletes, merges, workflow execution, and content changes are high impact.",
4958
4987
  inputSchema: CallServiceConnectionActionInputSchema,
4959
4988
  outputSchema: recordOutputSchema("call_service_connection_action", CallServiceConnectionActionOutputSchema),
4960
4989
  annotations: { title: "Run Connected Service Action", readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true }
@@ -5001,12 +5030,15 @@ async function readResponseData(res) {
5001
5030
  }
5002
5031
  function httpErrorPayload(path, res, data) {
5003
5032
  const objectData = data && typeof data === "object" && !Array.isArray(data) ? data : null;
5004
- const bodyMessage = objectData ? objectData.message ?? objectData.error ?? objectData.error_code : data;
5033
+ const rawCode = objectData?.code ?? objectData?.errorCode ?? objectData?.error_code;
5034
+ const safeCode = typeof rawCode === "string" && /^[a-z0-9][a-z0-9_-]{0,99}$/.test(rawCode) ? rawCode : "mcp_http_error";
5035
+ const bodyMessage = objectData ? objectData.message ?? objectData.error ?? rawCode : data;
5005
5036
  return {
5006
5037
  ...objectData ?? { body: data },
5007
- error: objectData?.error ?? objectData?.error_code ?? "mcp_http_error",
5038
+ error: safeCode,
5039
+ error_code: safeCode,
5008
5040
  error_type: "http",
5009
- retryable: res.status === 429 || res.status >= 500,
5041
+ retryable: typeof objectData?.retryable === "boolean" ? objectData.retryable : res.status === 429 || res.status >= 500,
5010
5042
  status: res.status,
5011
5043
  statusText: res.statusText,
5012
5044
  path,
@@ -9245,4 +9277,4 @@ export {
9245
9277
  registerMemoryMcpTools,
9246
9278
  MemoryMcpToolExecutor
9247
9279
  };
9248
- //# sourceMappingURL=chunk-ETJBTYZX.js.map
9280
+ //# sourceMappingURL=chunk-YIV4IKFG.js.map