mcpscraper-cli 0.5.0 → 0.6.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.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Command-line interface for [mcpscraper.dev](https://mcpscraper.dev) and [memory.mcpscraper.dev](https://memory.mcpscraper.dev).
4
4
 
5
- The CLI provides friendly shortcuts for common operations plus universal discovery and invocation for every one of the 156 unified MCP tools (71 MCP Scraper plus 85 mirrored memory tools).
5
+ The CLI provides friendly shortcuts for common operations plus universal discovery and invocation for every one of the 157 unified MCP tools (72 MCP Scraper plus 85 mirrored memory tools).
6
6
 
7
7
  ## Install
8
8
 
@@ -31,7 +31,7 @@ mcpscraper tools call describe_service_connection_tool --args '{"connectionId":"
31
31
  mcpscraper tools call renew_connected_data_download --args '{"artifactId":"artifact_123"}' --json
32
32
  ```
33
33
 
34
- `tools list` contains exactly 156 manifest-backed names. `tools call` accepts any one of them. Tools marked destructive require `--yes`.
34
+ `tools list` contains exactly 157 manifest-backed names. `tools call` accepts any one of them. Tools marked destructive require `--yes`.
35
35
 
36
36
  ### `mcpscraper search <query>`
37
37
 
package/dist/bin/cli.js CHANGED
@@ -7,7 +7,7 @@ import { realpathSync } from "fs";
7
7
  import { ScraperClient, ScraperApiError } from "mcpscraper-sdk";
8
8
 
9
9
  // src/version.ts
10
- var CLI_VERSION = "0.5.0";
10
+ var CLI_VERSION = "0.6.0";
11
11
 
12
12
  // src/generated-tools.ts
13
13
  var MCP_TOOL_CATALOG = [
@@ -1783,7 +1783,7 @@ var MCP_TOOL_CATALOG = [
1783
1783
  "name": "list_service_connections",
1784
1784
  "category": "connections",
1785
1785
  "title": "List Connected Services",
1786
- "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.",
1786
+ "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.",
1787
1787
  "inputSchema": {
1788
1788
  "type": "object",
1789
1789
  "properties": {},
@@ -2016,7 +2016,7 @@ var MCP_TOOL_CATALOG = [
2016
2016
  "name": "read_service_connection",
2017
2017
  "category": "connections",
2018
2018
  "title": "Read Connected Service",
2019
- "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.",
2019
+ "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.",
2020
2020
  "inputSchema": {
2021
2021
  "type": "object",
2022
2022
  "properties": {
@@ -2055,7 +2055,7 @@ var MCP_TOOL_CATALOG = [
2055
2055
  "name": "call_service_connection_action",
2056
2056
  "category": "connections",
2057
2057
  "title": "Run Connected Service Action",
2058
- "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.",
2058
+ "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.",
2059
2059
  "inputSchema": {
2060
2060
  "type": "object",
2061
2061
  "properties": {
@@ -6931,7 +6931,7 @@ var MCP_TOOL_CATALOG = [
6931
6931
  "name": "describe_service_connection_tool",
6932
6932
  "category": "connections",
6933
6933
  "title": "Describe Connected Service Tool",
6934
- "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.",
6934
+ "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.",
6935
6935
  "inputSchema": {
6936
6936
  "type": "object",
6937
6937
  "properties": {
@@ -6944,6 +6944,10 @@ var MCP_TOOL_CATALOG = [
6944
6944
  "type": "string",
6945
6945
  "minLength": 1,
6946
6946
  "description": "One exact name from that connection's readTools or actionTools. Admin-blocked and arbitrary names are rejected."
6947
+ },
6948
+ "fresh": {
6949
+ "type": "boolean",
6950
+ "description": "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."
6947
6951
  }
6948
6952
  },
6949
6953
  "required": [
@@ -6960,6 +6964,67 @@ var MCP_TOOL_CATALOG = [
6960
6964
  "idempotentHint": true,
6961
6965
  "openWorldHint": false
6962
6966
  }
6967
+ },
6968
+ {
6969
+ "name": "import_service_connection_to_memory",
6970
+ "category": "connections",
6971
+ "title": "Import Connected Service Snapshot to Memory",
6972
+ "description": "Run exactly one bounded, approved read on a tenant-owned connected service and upsert the redacted result into an existing ordinary Memory vault at a server-generated stable path. The saved document is embedded for RAG and marked as untrusted provider data, never instructions. This is a one-result snapshot: it does not paginate, bulk-import an account, continuously sync changes, propagate deletions, or create normalized tables. Use list_service_connections first and supply an exact current readTools entry; action and admin tools are rejected.",
6973
+ "inputSchema": {
6974
+ "type": "object",
6975
+ "properties": {
6976
+ "connectionId": {
6977
+ "type": "string",
6978
+ "minLength": 1,
6979
+ "maxLength": 200,
6980
+ "description": "A tenant-owned connectionId from list_service_connections."
6981
+ },
6982
+ "providerConfigKey": {
6983
+ "type": "string",
6984
+ "minLength": 1,
6985
+ "maxLength": 200,
6986
+ "description": "The exact providerConfigKey returned with that connection. It is matched together with connectionId against the authenticated caller."
6987
+ },
6988
+ "tool": {
6989
+ "type": "string",
6990
+ "minLength": 1,
6991
+ "maxLength": 200,
6992
+ "description": "One exact current readTools entry for that connection. Actions, admin tools, and unlisted names are rejected."
6993
+ },
6994
+ "args": {
6995
+ "type": "object",
6996
+ "additionalProperties": {},
6997
+ "description": "JSON arguments for one bounded provider read. The serialized object may be at most 64 KiB."
6998
+ },
6999
+ "vault": {
7000
+ "type": "string",
7001
+ "minLength": 1,
7002
+ "maxLength": 100,
7003
+ "description": "An existing ordinary Memory vault the caller can write and index. Secure and channel vaults are rejected because this tool creates searchable RAG content."
7004
+ },
7005
+ "title": {
7006
+ "type": "string",
7007
+ "minLength": 1,
7008
+ "maxLength": 200,
7009
+ "description": "Optional human-readable snapshot title. The server always chooses the stable storage path."
7010
+ }
7011
+ },
7012
+ "required": [
7013
+ "connectionId",
7014
+ "providerConfigKey",
7015
+ "tool",
7016
+ "vault"
7017
+ ],
7018
+ "additionalProperties": false,
7019
+ "$schema": "http://json-schema.org/draft-07/schema#"
7020
+ },
7021
+ "annotations": {
7022
+ "title": "Import Connected Service Snapshot to Memory",
7023
+ "readOnlyHint": false,
7024
+ "destructiveHint": false,
7025
+ "idempotentHint": true,
7026
+ "openWorldHint": true
7027
+ }
6963
7028
  }
6964
7029
  ];
6965
7030
  var MCP_TOOL_NAMES = MCP_TOOL_CATALOG.map((tool) => tool.name);
@@ -7108,7 +7173,7 @@ Vault deposit: ${page.memory.deposited ? `saved to ${page.memory.vault}` : "fail
7108
7173
  });
7109
7174
  });
7110
7175
  });
7111
- const memory = program.command("memory").description("Ergonomic memory shortcuts; use tools list/call for the complete 156-tool surface");
7176
+ const memory = program.command("memory").description("Ergonomic memory shortcuts; use tools list/call for the complete 157-tool surface");
7112
7177
  memory.command("search <query>").description("Semantic search across your mcp-memory vaults").option("--json", "print raw JSON").action(async (query, opts, cmd) => {
7113
7178
  await run(async () => {
7114
7179
  const result = await client(cmd).memoryTools.memory.search({ query });
@@ -7131,7 +7196,7 @@ Vault deposit: ${page.memory.deposited ? `saved to ${page.memory.vault}` : "fail
7131
7196
  });
7132
7197
  });
7133
7198
  const tools = program.command("tools").description(`Discover, inspect, and call every unified MCP tool (${MCP_TOOL_COUNT} total)`);
7134
- tools.command("list").description("List the complete local 156-tool catalog").option("--category <name>", "filter by SDK category").option("--json", "print the complete catalog as JSON").action((opts) => {
7199
+ tools.command("list").description("List the complete local 157-tool catalog").option("--category <name>", "filter by SDK category").option("--json", "print the complete catalog as JSON").action((opts) => {
7135
7200
  const catalog = opts.category ? MCP_TOOL_CATALOG.filter((tool) => tool.category === opts.category) : MCP_TOOL_CATALOG;
7136
7201
  if (opts.json) {
7137
7202
  console.log(JSON.stringify(catalog, null, 2));
@@ -7146,7 +7211,7 @@ ${catalog.length}/${MCP_TOOL_COUNT} tools`);
7146
7211
  if (!tool) throw new Error(`Unknown tool "${name}". Run "mcpscraper tools list" for all ${MCP_TOOL_COUNT} names.`);
7147
7212
  console.log(JSON.stringify(tool, null, 2));
7148
7213
  });
7149
- tools.command("call <name>").description("Call any of the 156 MCP tools by exact wire name").option("--args <json>", "tool arguments as a JSON object", "{}").option("--yes", "confirm a tool marked destructive").option("--json", "print raw JSON").action(async (name, opts, cmd) => {
7214
+ tools.command("call <name>").description("Call any of the 157 MCP tools by exact wire name").option("--args <json>", "tool arguments as a JSON object", "{}").option("--yes", "confirm a tool marked destructive").option("--json", "print raw JSON").action(async (name, opts, cmd) => {
7150
7215
  await run(async () => {
7151
7216
  const tool = MCP_TOOL_CATALOG.find((entry) => entry.name === name);
7152
7217
  if (!tool) throw new Error(`Unknown tool "${name}". Run "mcpscraper tools list" for all ${MCP_TOOL_COUNT} names.`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcpscraper-cli",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Command-line interface for mcpscraper.dev and memory.mcpscraper.dev",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -17,7 +17,7 @@
17
17
  "test": "tsx --test test/*.test.ts"
18
18
  },
19
19
  "dependencies": {
20
- "mcpscraper-sdk": "^0.8.0",
20
+ "mcpscraper-sdk": "^0.9.0",
21
21
  "commander": "^12.0.0"
22
22
  },
23
23
  "devDependencies": {