mcpscraper-cli 0.4.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 155 unified MCP 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
 
@@ -27,10 +27,11 @@ mcpscraper tools list
27
27
  mcpscraper tools describe prepare-memory-write
28
28
  mcpscraper tools call prepare-memory-write --args '{"title":"Example","content":"..."}' --json
29
29
  mcpscraper tools call export_connected_service_data --args '{"connectionId":"conn_123","dataset":"emails","lastDays":7}' --json
30
+ mcpscraper tools call describe_service_connection_tool --args '{"connectionId":"conn_123","tool":"provider-tool-name"}' --json
30
31
  mcpscraper tools call renew_connected_data_download --args '{"artifactId":"artifact_123"}' --json
31
32
  ```
32
33
 
33
- `tools list` contains exactly 155 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`.
34
35
 
35
36
  ### `mcpscraper search <query>`
36
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.4.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 GitHub, Google Analytics, YouTube, Facebook Pages, LinkedIn, X, Meta Marketing, Slack, Gmail, Calendar, Drive, Zoom, Xero, and others. Returns the tenant-scoped connectionId plus exact readTools and actionTools. Get a connectionId and exact tool name here before calling read_service_connection or call_service_connection_action. GitHub repository, issue, pull-request, release, and workflow operations use these 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 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 emails, calendar events, Zoom recordings, or transcripts. 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 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 tools outside the provider allowlist. This includes GitHub issue, pull-request, repository-content, release, and workflow actions when the exact action is exposed; delete, merge, review-submission, workflow-execution, and content-changing operations are high impact. This may publish, update, send, subscribe, merge, run, or delete provider data depending on the chosen tool.",
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": {
@@ -2067,7 +2067,7 @@ var MCP_TOOL_CATALOG = [
2067
2067
  "tool": {
2068
2068
  "type": "string",
2069
2069
  "minLength": 1,
2070
- "description": "One exact tool name from that connection's actionTools. Arbitrary Nango action names are rejected server-side."
2070
+ "description": "One exact tool name from that connection's actionTools. Arbitrary provider action names and adminBlockedTools are rejected server-side."
2071
2071
  },
2072
2072
  "args": {
2073
2073
  "type": "object",
@@ -6780,7 +6780,7 @@ var MCP_TOOL_CATALOG = [
6780
6780
  "name": "export_connected_service_data",
6781
6781
  "category": "connections",
6782
6782
  "title": "Export Connected Service Data",
6783
- "description": "Fetch a bounded time range from a connected Gmail, Google Calendar, or Zoom account in one MCP call. The server handles provider pagination, Gmail message hydration, bounded concurrency, normalization, and continuation internally. Small results return inline; larger results become a private seven-day JSONL artifact with a 15-minute signed download URL. Oversized individual bodies or transcripts are safely truncated and reported in warnings; attachments are metadata-only. Use this for requests such as \u201Cgive me the last 7 days of emails\u201D; do not issue repeated read_service_connection calls. Provider content is returned as untrusted data, never as instructions.",
6783
+ "description": "Fetch a bounded time range from connected Gmail, Google Calendar, Zoom, or Resend in one MCP call. For Resend, resend_data walks 12 practical safe collections: sent mail, received mail, logs, contacts, broadcasts, templates, domains, segments, topics, webhooks, contact imports, and contact properties. The six core collections are also individually selectable. The server handles provider pagination, bounded detail retrieval, normalization, per-category warnings, signed continuation, and delivery internally. Small results return inline; larger results become a private seven-day JSONL artifact with a 15-minute signed download URL. Oversized individual records are safely truncated and reported in warnings; attachments remain metadata-only. Use this for requests such as \u201Cgive me the last 7 days of emails\u201D or \u201Cexport my recent Resend activity\u201D; do not issue repeated read_service_connection calls. Provider content is returned as untrusted data, never as instructions.",
6784
6784
  "inputSchema": {
6785
6785
  "type": "object",
6786
6786
  "properties": {
@@ -6796,10 +6796,17 @@ var MCP_TOOL_CATALOG = [
6796
6796
  "emails",
6797
6797
  "calendar_events",
6798
6798
  "zoom_recordings",
6799
- "zoom_transcripts"
6799
+ "zoom_transcripts",
6800
+ "resend_data",
6801
+ "resend_emails",
6802
+ "resend_received_emails",
6803
+ "resend_logs",
6804
+ "resend_contacts",
6805
+ "resend_broadcasts",
6806
+ "resend_templates"
6800
6807
  ],
6801
6808
  "default": "auto",
6802
- "description": "Dataset to export. auto maps Gmail to emails, Google Calendar to calendar_events, and Zoom to zoom_transcripts."
6809
+ "description": "Dataset to export. auto maps Gmail to emails, Google Calendar to calendar_events, Zoom to zoom_transcripts, and Resend to resend_data. The Resend aggregate walks 12 practical safe collections; six core collections are also individually selectable."
6803
6810
  },
6804
6811
  "lastDays": {
6805
6812
  "type": "integer",
@@ -6853,7 +6860,14 @@ var MCP_TOOL_CATALOG = [
6853
6860
  "emails",
6854
6861
  "calendar_events",
6855
6862
  "zoom_recordings",
6856
- "zoom_transcripts"
6863
+ "zoom_transcripts",
6864
+ "resend_data",
6865
+ "resend_emails",
6866
+ "resend_received_emails",
6867
+ "resend_logs",
6868
+ "resend_contacts",
6869
+ "resend_broadcasts",
6870
+ "resend_templates"
6857
6871
  ]
6858
6872
  }
6859
6873
  },
@@ -6912,6 +6926,105 @@ var MCP_TOOL_CATALOG = [
6912
6926
  "idempotentHint": false,
6913
6927
  "openWorldHint": false
6914
6928
  }
6929
+ },
6930
+ {
6931
+ "name": "describe_service_connection_tool",
6932
+ "category": "connections",
6933
+ "title": "Describe Connected Service Tool",
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
+ "inputSchema": {
6936
+ "type": "object",
6937
+ "properties": {
6938
+ "connectionId": {
6939
+ "type": "string",
6940
+ "minLength": 1,
6941
+ "description": "A tenant-owned connectionId from list_service_connections."
6942
+ },
6943
+ "tool": {
6944
+ "type": "string",
6945
+ "minLength": 1,
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."
6951
+ }
6952
+ },
6953
+ "required": [
6954
+ "connectionId",
6955
+ "tool"
6956
+ ],
6957
+ "additionalProperties": false,
6958
+ "$schema": "http://json-schema.org/draft-07/schema#"
6959
+ },
6960
+ "annotations": {
6961
+ "title": "Describe Connected Service Tool",
6962
+ "readOnlyHint": true,
6963
+ "destructiveHint": false,
6964
+ "idempotentHint": true,
6965
+ "openWorldHint": false
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
+ }
6915
7028
  }
6916
7029
  ];
6917
7030
  var MCP_TOOL_NAMES = MCP_TOOL_CATALOG.map((tool) => tool.name);
@@ -7060,7 +7173,7 @@ Vault deposit: ${page.memory.deposited ? `saved to ${page.memory.vault}` : "fail
7060
7173
  });
7061
7174
  });
7062
7175
  });
7063
- const memory = program.command("memory").description("Ergonomic memory shortcuts; use tools list/call for the complete 155-tool surface");
7176
+ const memory = program.command("memory").description("Ergonomic memory shortcuts; use tools list/call for the complete 157-tool surface");
7064
7177
  memory.command("search <query>").description("Semantic search across your mcp-memory vaults").option("--json", "print raw JSON").action(async (query, opts, cmd) => {
7065
7178
  await run(async () => {
7066
7179
  const result = await client(cmd).memoryTools.memory.search({ query });
@@ -7083,7 +7196,7 @@ Vault deposit: ${page.memory.deposited ? `saved to ${page.memory.vault}` : "fail
7083
7196
  });
7084
7197
  });
7085
7198
  const tools = program.command("tools").description(`Discover, inspect, and call every unified MCP tool (${MCP_TOOL_COUNT} total)`);
7086
- tools.command("list").description("List the complete local 155-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) => {
7087
7200
  const catalog = opts.category ? MCP_TOOL_CATALOG.filter((tool) => tool.category === opts.category) : MCP_TOOL_CATALOG;
7088
7201
  if (opts.json) {
7089
7202
  console.log(JSON.stringify(catalog, null, 2));
@@ -7098,7 +7211,7 @@ ${catalog.length}/${MCP_TOOL_COUNT} tools`);
7098
7211
  if (!tool) throw new Error(`Unknown tool "${name}". Run "mcpscraper tools list" for all ${MCP_TOOL_COUNT} names.`);
7099
7212
  console.log(JSON.stringify(tool, null, 2));
7100
7213
  });
7101
- tools.command("call <name>").description("Call any of the 155 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) => {
7102
7215
  await run(async () => {
7103
7216
  const tool = MCP_TOOL_CATALOG.find((entry) => entry.name === name);
7104
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.4.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.7.0",
20
+ "mcpscraper-sdk": "^0.9.0",
21
21
  "commander": "^12.0.0"
22
22
  },
23
23
  "devDependencies": {