mcp-scraper 0.23.0 → 0.25.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 +3 -3
- package/dist/bin/api-server.cjs +151 -55
- package/dist/bin/api-server.cjs.map +1 -1
- package/dist/bin/api-server.js +1 -1
- package/dist/bin/mcp-scraper-cli.cjs +1 -1
- package/dist/bin/mcp-scraper-cli.cjs.map +1 -1
- package/dist/bin/mcp-scraper-cli.js +1 -1
- package/dist/bin/mcp-scraper-install.cjs +1 -1
- package/dist/bin/mcp-scraper-install.cjs.map +1 -1
- package/dist/bin/mcp-scraper-install.js +1 -1
- package/dist/bin/mcp-stdio-server.cjs +150 -54
- package/dist/bin/mcp-stdio-server.cjs.map +1 -1
- package/dist/bin/mcp-stdio-server.js +2 -2
- package/dist/{chunk-CGFJD7C6.js → chunk-NC37L5RW.js} +151 -55
- package/dist/chunk-NC37L5RW.js.map +1 -0
- package/dist/chunk-UELJZCUC.js +7 -0
- package/dist/chunk-UELJZCUC.js.map +1 -0
- package/dist/{server-XO2J5KFL.js → server-PILR3U5E.js} +3 -3
- package/docs/adr/0002-hybrid-smart-rag-vault-retrieval.md +62 -0
- package/docs/adr/README.md +1 -0
- package/docs/mcp-tool-manifest.generated.json +549 -53
- package/package.json +2 -2
- package/dist/chunk-64DNEO5R.js +0 -7
- package/dist/chunk-64DNEO5R.js.map +0 -1
- package/dist/chunk-CGFJD7C6.js.map +0 -1
- /package/dist/{server-XO2J5KFL.js.map → server-PILR3U5E.js.map} +0 -0
|
@@ -106,7 +106,7 @@ function renderInstallTerminal(options) {
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
// src/version.ts
|
|
109
|
-
var PACKAGE_VERSION = "0.
|
|
109
|
+
var PACKAGE_VERSION = "0.25.0";
|
|
110
110
|
|
|
111
111
|
// bin/mcp-scraper-install.ts
|
|
112
112
|
var noColor = process.argv.includes("--no-color") || process.env.NO_COLOR !== void 0 || process.env.FORCE_COLOR === "0" || !process.stdout.isTTY;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/install-terminal.ts","../../src/version.ts","../../bin/mcp-scraper-install.ts"],"sourcesContent":["export interface InstallTerminalOptions {\n color?: boolean\n version: string\n apiKeyConfigured?: boolean\n}\n\ntype Tone = 'cyan' | 'lime' | 'amber' | 'red' | 'muted' | 'bold'\n\nconst CODES: Record<Tone | 'reset', string> = {\n reset: '\\x1b[0m',\n cyan: '\\x1b[36m',\n lime: '\\x1b[32m',\n amber: '\\x1b[33m',\n red: '\\x1b[31m',\n muted: '\\x1b[90m',\n bold: '\\x1b[1m',\n}\n\nfunction colorize(value: string, tone: Tone, enabled: boolean): string {\n if (!enabled) return value\n return `${CODES[tone]}${value}${CODES.reset}`\n}\n\nfunction toolRow(label: string, tools: string[], enabled: boolean): string {\n const padded = label.padEnd(9, ' ')\n return ` ${colorize(padded, 'muted', enabled)} ${tools.join(colorize(' . ', 'muted', enabled))}`\n}\n\nexport function renderInstallTerminal(options: InstallTerminalOptions): string {\n const color = options.color ?? true\n const apiKeyValue = options.apiKeyConfigured ? '$MCP_SCRAPER_API_KEY' : 'sk_live_your_key'\n const ascii = String.raw`\n __ __ ____ ____ \n| \\/ |/ ___| _ \\\n| |\\/| | | | |_) |\n| | | | |___| __/\n|_| |_|\\____|_|\n\n ____ ____ ____ _ ____ _____ ____\n/ ___| / ___| _ \\ / \\ | _ \\| ____| _ \\\n\\___ \\| | | |_) | / _ \\ | |_) | _| | |_) |\n ___) | |___| _ < / ___ \\| __/| |___| _ <\n|____/ \\____|_| \\_\\/_/ \\_\\_| |_____|_| \\_\\\n`\n\n const claudeCommand = [\n `MCP_SCRAPER_API_KEY=${apiKeyValue} npx -y -p mcp-scraper@latest \\\\`,\n ' mcp-scraper-cli agent install claude --apply',\n ].join('\\n')\n\n const codexConfig = [\n '[mcp_servers.mcp-scraper]',\n 'command = \"npx\"',\n 'args = [\"-y\", \"-p\", \"mcp-scraper@latest\", \"mcp-scraper\"]',\n `env = { MCP_SCRAPER_API_KEY = \"${apiKeyValue}\" }`,\n ].join('\\n')\n\n return [\n colorize(`mcp-scraper v${options.version}`, 'bold', color),\n colorize('> mcp-scraper-install', 'muted', color),\n colorize(ascii, 'amber', color),\n `${colorize('MCP Scraper Agent', 'cyan', color)} . v${options.version} . mcpscraper.dev`,\n '1/1 install surfaces ready',\n colorize('Newest: any approved connection read can become an indexed Memory snapshot in one call. OAuth stays tenant-isolated and provider content is redacted and marked untrusted.', 'lime', color),\n '',\n `${colorize('Tools', 'cyan', color)} ${colorize('(159 MCP tools)', 'muted', color)}`,\n toolRow('search', ['harvest_paa', 'search_serp', 'maps_search', 'maps_place_intel'], color),\n toolRow('extract', ['extract_url', 'map_site_urls', 'extract_site', 'audit_site', 'directory_workflow'], color),\n toolRow('build', ['rank_tracker_workflow', 'cron plan', 'database prompt'], color),\n toolRow('media', ['youtube_harvest', 'youtube_transcribe', 'facebook_ad_search', 'facebook_page_intel', 'facebook_ad_transcribe', 'facebook_video_transcribe', 'instagram_profile_content', 'instagram_media_download', 'reddit_thread'], color),\n toolRow('browser', ['browser_open', 'browser_profile_connect', 'browser_profile_list', 'browser_close', 'browser_screenshot', 'browser_read', 'browser_locate', 'browser_replay_mark', 'browser_replay_annotate'], color),\n toolRow('connect', ['list_service_connections', 'describe_service_connection_tool', 'import_service_connection_to_memory', 'export_connected_service_data', 'renew_connected_data_download', 'read_service_connection', 'call_service_connection_action'], color),\n toolRow('account', ['credits_info', 'reports', 'MCP resources'], color),\n toolRow('memory', ['memory-put', 'memory-get', 'memory-search', 'list-vaults', 'record-fact', 'list-scheduled-actions'], color),\n `${colorize('Workflows', 'cyan', color)} ${colorize('(MCP + CLI + API)', 'muted', color)}`,\n toolRow('route', ['workflow_list', 'workflow_suggest', 'workflow_run', 'workflow_step', 'workflow_status', 'workflow_artifact_read'], color),\n toolRow('seo', ['directory', 'agent-packet', 'competitive audit', 'map/serp comparison', 'PAA/AIO briefs', 'scheduled runs'], color),\n '',\n colorize('Usage tips:', 'amber', color),\n 'Run mcp-scraper-install for this visible card. Run mcp-scraper-cli for setup utilities and subcommands.',\n 'Run mcp-scraper in a human terminal to print this card; MCP clients get the same command as a silent stdio server.',\n 'Explicit card command: npx -y -p mcp-scraper@latest mcp-scraper-install',\n 'Hosted browser sessions use direct/no-proxy egress by default.',\n 'Customer auth setup: run browser_profile_connect, send the watch_url, let the user sign in, then call browser_profile_list until AUTHENTICATED.',\n 'Connected account ranges: call export_connected_service_data once. It handles Gmail, Calendar, Zoom, and Resend pagination; do not loop read_service_connection over individual records.',\n 'Connected account RAG: call import_service_connection_to_memory for one bounded approved read. It writes a redacted, untrusted snapshot to a stable Memory path and embeds it for search.',\n 'Stack logins / reconnect: run browser_profile_connect again with the same profile name and another domain to add accounts or refresh a login.',\n 'Start with workflow_suggest for broad jobs like market analysis, ICP research, CRO audits, brand briefs, content gaps, and AI visibility.',\n 'For MCP clients, use mcp-scraper so one install can mix SERP, Maps, browser, reports, and saved MCP resources.',\n 'If you hit the concurrency limit, add an extra slot for $5/month with mcp-scraper-cli billing concurrency checkout.',\n '',\n `${colorize('Ready.', 'lime', color)} Install the combined MCP server with one command:`,\n '',\n colorize('Setup doctor', 'amber', color),\n 'npx -y -p mcp-scraper@latest mcp-scraper-cli doctor',\n '',\n colorize('Hosted profile setup', 'amber', color),\n 'In your MCP client, call browser_profile_connect with email=\"seo@example.com\" and domain=\"chatgpt.com\".',\n 'Give the returned watch_url to the user. After they sign in, call browser_profile_list, then browser_open with the returned profile. Add more logins by calling browser_profile_connect again with the same profile and a new domain.',\n '',\n colorize('Claude Code one-command setup', 'amber', color),\n claudeCommand,\n 'Then fully exit Claude Code and open a new Claude terminal. Check with: claude mcp list',\n '',\n colorize('Codex config', 'amber', color),\n codexConfig,\n '',\n colorize('Claude Desktop Extension', 'amber', color),\n 'Download: https://mcpscraper.dev/downloads/mcp-scraper.mcpb',\n '',\n colorize('Safety note:', 'muted', color),\n 'mcp-scraper prints this card only when stdin/stdout are an interactive TTY. In MCP clients it writes only JSON-RPC to stdout.',\n 'Use --stdio or MCP_SCRAPER_FORCE_STDIO=1 to force server mode from a terminal.',\n '',\n ].join('\\n')\n}\n","export const PACKAGE_VERSION = '0.23.0'\n","#!/usr/bin/env node\nimport { renderInstallTerminal } from '../src/install-terminal.js'\nimport { PACKAGE_VERSION } from '../src/version.js'\n\nconst noColor =\n process.argv.includes('--no-color') ||\n process.env.NO_COLOR !== undefined ||\n process.env.FORCE_COLOR === '0' ||\n !process.stdout.isTTY\n\nconst help = process.argv.includes('--help') || process.argv.includes('-h')\nif (help) {\n process.stdout.write([\n 'Usage: mcp-scraper-install [--no-color]',\n '',\n 'Prints the branded MCP Scraper terminal install card and copyable install commands.',\n 'mcp-scraper prints the same card in a human terminal and runs as the MCP stdio server in clients.',\n '',\n ].join('\\n'))\n process.exit(0)\n}\n\nprocess.stdout.write(renderInstallTerminal({\n version: PACKAGE_VERSION,\n color: !noColor,\n apiKeyConfigured: Boolean(process.env.MCP_SCRAPER_API_KEY?.trim()),\n}))\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/install-terminal.ts","../../src/version.ts","../../bin/mcp-scraper-install.ts"],"sourcesContent":["export interface InstallTerminalOptions {\n color?: boolean\n version: string\n apiKeyConfigured?: boolean\n}\n\ntype Tone = 'cyan' | 'lime' | 'amber' | 'red' | 'muted' | 'bold'\n\nconst CODES: Record<Tone | 'reset', string> = {\n reset: '\\x1b[0m',\n cyan: '\\x1b[36m',\n lime: '\\x1b[32m',\n amber: '\\x1b[33m',\n red: '\\x1b[31m',\n muted: '\\x1b[90m',\n bold: '\\x1b[1m',\n}\n\nfunction colorize(value: string, tone: Tone, enabled: boolean): string {\n if (!enabled) return value\n return `${CODES[tone]}${value}${CODES.reset}`\n}\n\nfunction toolRow(label: string, tools: string[], enabled: boolean): string {\n const padded = label.padEnd(9, ' ')\n return ` ${colorize(padded, 'muted', enabled)} ${tools.join(colorize(' . ', 'muted', enabled))}`\n}\n\nexport function renderInstallTerminal(options: InstallTerminalOptions): string {\n const color = options.color ?? true\n const apiKeyValue = options.apiKeyConfigured ? '$MCP_SCRAPER_API_KEY' : 'sk_live_your_key'\n const ascii = String.raw`\n __ __ ____ ____ \n| \\/ |/ ___| _ \\\n| |\\/| | | | |_) |\n| | | | |___| __/\n|_| |_|\\____|_|\n\n ____ ____ ____ _ ____ _____ ____\n/ ___| / ___| _ \\ / \\ | _ \\| ____| _ \\\n\\___ \\| | | |_) | / _ \\ | |_) | _| | |_) |\n ___) | |___| _ < / ___ \\| __/| |___| _ <\n|____/ \\____|_| \\_\\/_/ \\_\\_| |_____|_| \\_\\\n`\n\n const claudeCommand = [\n `MCP_SCRAPER_API_KEY=${apiKeyValue} npx -y -p mcp-scraper@latest \\\\`,\n ' mcp-scraper-cli agent install claude --apply',\n ].join('\\n')\n\n const codexConfig = [\n '[mcp_servers.mcp-scraper]',\n 'command = \"npx\"',\n 'args = [\"-y\", \"-p\", \"mcp-scraper@latest\", \"mcp-scraper\"]',\n `env = { MCP_SCRAPER_API_KEY = \"${apiKeyValue}\" }`,\n ].join('\\n')\n\n return [\n colorize(`mcp-scraper v${options.version}`, 'bold', color),\n colorize('> mcp-scraper-install', 'muted', color),\n colorize(ascii, 'amber', color),\n `${colorize('MCP Scraper Agent', 'cyan', color)} . v${options.version} . mcpscraper.dev`,\n '1/1 install surfaces ready',\n colorize('Newest: any approved connection read can become an indexed Memory snapshot in one call. OAuth stays tenant-isolated and provider content is redacted and marked untrusted.', 'lime', color),\n '',\n `${colorize('Tools', 'cyan', color)} ${colorize('(159 MCP tools)', 'muted', color)}`,\n toolRow('search', ['harvest_paa', 'search_serp', 'maps_search', 'maps_place_intel'], color),\n toolRow('extract', ['extract_url', 'map_site_urls', 'extract_site', 'audit_site', 'directory_workflow'], color),\n toolRow('build', ['rank_tracker_workflow', 'cron plan', 'database prompt'], color),\n toolRow('media', ['youtube_harvest', 'youtube_transcribe', 'facebook_ad_search', 'facebook_page_intel', 'facebook_ad_transcribe', 'facebook_video_transcribe', 'instagram_profile_content', 'instagram_media_download', 'reddit_thread'], color),\n toolRow('browser', ['browser_open', 'browser_profile_connect', 'browser_profile_list', 'browser_close', 'browser_screenshot', 'browser_read', 'browser_locate', 'browser_replay_mark', 'browser_replay_annotate'], color),\n toolRow('connect', ['list_service_connections', 'describe_service_connection_tool', 'import_service_connection_to_memory', 'export_connected_service_data', 'renew_connected_data_download', 'read_service_connection', 'call_service_connection_action'], color),\n toolRow('account', ['credits_info', 'reports', 'MCP resources'], color),\n toolRow('memory', ['memory-put', 'memory-get', 'memory-search', 'list-vaults', 'record-fact', 'list-scheduled-actions'], color),\n `${colorize('Workflows', 'cyan', color)} ${colorize('(MCP + CLI + API)', 'muted', color)}`,\n toolRow('route', ['workflow_list', 'workflow_suggest', 'workflow_run', 'workflow_step', 'workflow_status', 'workflow_artifact_read'], color),\n toolRow('seo', ['directory', 'agent-packet', 'competitive audit', 'map/serp comparison', 'PAA/AIO briefs', 'scheduled runs'], color),\n '',\n colorize('Usage tips:', 'amber', color),\n 'Run mcp-scraper-install for this visible card. Run mcp-scraper-cli for setup utilities and subcommands.',\n 'Run mcp-scraper in a human terminal to print this card; MCP clients get the same command as a silent stdio server.',\n 'Explicit card command: npx -y -p mcp-scraper@latest mcp-scraper-install',\n 'Hosted browser sessions use direct/no-proxy egress by default.',\n 'Customer auth setup: run browser_profile_connect, send the watch_url, let the user sign in, then call browser_profile_list until AUTHENTICATED.',\n 'Connected account ranges: call export_connected_service_data once. It handles Gmail, Calendar, Zoom, and Resend pagination; do not loop read_service_connection over individual records.',\n 'Connected account RAG: call import_service_connection_to_memory for one bounded approved read. It writes a redacted, untrusted snapshot to a stable Memory path and embeds it for search.',\n 'Stack logins / reconnect: run browser_profile_connect again with the same profile name and another domain to add accounts or refresh a login.',\n 'Start with workflow_suggest for broad jobs like market analysis, ICP research, CRO audits, brand briefs, content gaps, and AI visibility.',\n 'For MCP clients, use mcp-scraper so one install can mix SERP, Maps, browser, reports, and saved MCP resources.',\n 'If you hit the concurrency limit, add an extra slot for $5/month with mcp-scraper-cli billing concurrency checkout.',\n '',\n `${colorize('Ready.', 'lime', color)} Install the combined MCP server with one command:`,\n '',\n colorize('Setup doctor', 'amber', color),\n 'npx -y -p mcp-scraper@latest mcp-scraper-cli doctor',\n '',\n colorize('Hosted profile setup', 'amber', color),\n 'In your MCP client, call browser_profile_connect with email=\"seo@example.com\" and domain=\"chatgpt.com\".',\n 'Give the returned watch_url to the user. After they sign in, call browser_profile_list, then browser_open with the returned profile. Add more logins by calling browser_profile_connect again with the same profile and a new domain.',\n '',\n colorize('Claude Code one-command setup', 'amber', color),\n claudeCommand,\n 'Then fully exit Claude Code and open a new Claude terminal. Check with: claude mcp list',\n '',\n colorize('Codex config', 'amber', color),\n codexConfig,\n '',\n colorize('Claude Desktop Extension', 'amber', color),\n 'Download: https://mcpscraper.dev/downloads/mcp-scraper.mcpb',\n '',\n colorize('Safety note:', 'muted', color),\n 'mcp-scraper prints this card only when stdin/stdout are an interactive TTY. In MCP clients it writes only JSON-RPC to stdout.',\n 'Use --stdio or MCP_SCRAPER_FORCE_STDIO=1 to force server mode from a terminal.',\n '',\n ].join('\\n')\n}\n","export const PACKAGE_VERSION = '0.25.0'\n","#!/usr/bin/env node\nimport { renderInstallTerminal } from '../src/install-terminal.js'\nimport { PACKAGE_VERSION } from '../src/version.js'\n\nconst noColor =\n process.argv.includes('--no-color') ||\n process.env.NO_COLOR !== undefined ||\n process.env.FORCE_COLOR === '0' ||\n !process.stdout.isTTY\n\nconst help = process.argv.includes('--help') || process.argv.includes('-h')\nif (help) {\n process.stdout.write([\n 'Usage: mcp-scraper-install [--no-color]',\n '',\n 'Prints the branded MCP Scraper terminal install card and copyable install commands.',\n 'mcp-scraper prints the same card in a human terminal and runs as the MCP stdio server in clients.',\n '',\n ].join('\\n'))\n process.exit(0)\n}\n\nprocess.stdout.write(renderInstallTerminal({\n version: PACKAGE_VERSION,\n color: !noColor,\n apiKeyConfigured: Boolean(process.env.MCP_SCRAPER_API_KEY?.trim()),\n}))\n"],"mappings":"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","names":[]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "../chunk-YNHPZU6B.js";
|
|
5
5
|
import {
|
|
6
6
|
PACKAGE_VERSION
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-UELJZCUC.js";
|
|
8
8
|
|
|
9
9
|
// bin/mcp-scraper-install.ts
|
|
10
10
|
var noColor = process.argv.includes("--no-color") || process.env.NO_COLOR !== void 0 || process.env.FORCE_COLOR === "0" || !process.stdout.isTTY;
|
|
@@ -556,7 +556,7 @@ render();
|
|
|
556
556
|
}
|
|
557
557
|
|
|
558
558
|
// src/version.ts
|
|
559
|
-
var PACKAGE_VERSION = "0.
|
|
559
|
+
var PACKAGE_VERSION = "0.25.0";
|
|
560
560
|
|
|
561
561
|
// src/mcp/browser-agent-tool-schemas.ts
|
|
562
562
|
var import_zod = require("zod");
|
|
@@ -5693,7 +5693,7 @@ Multi-step orchestrations \u2014 prefer these over hand-chaining primitives when
|
|
|
5693
5693
|
|
|
5694
5694
|
## Memory
|
|
5695
5695
|
mcp-scraper also exposes persistent per-user memory tools (notes, facts, vaults,
|
|
5696
|
-
scheduled actions, tables, channels) backed by memory.mcpscraper.dev. Every account starts with
|
|
5696
|
+
scheduled actions, tables, channels) backed by memory.mcpscraper.dev. Every account starts with 14
|
|
5697
5697
|
vaults \u2014 call **list-vaults** to see what exists before creating anything new. Pick the vault whose job
|
|
5698
5698
|
matches the content: **Ideas** (unvalidated concepts), **Knowledge** (distilled lessons/how-tos),
|
|
5699
5699
|
**Library** (raw source material \u2014 articles, transcripts), **People** (one durable note per person/org),
|
|
@@ -5701,7 +5701,8 @@ matches the content: **Ideas** (unvalidated concepts), **Knowledge** (distilled
|
|
|
5701
5701
|
(action items with a status), **Projects** (durable named initiatives), **Issues** (something broken),
|
|
5702
5702
|
**Improvement Log** (receipts of changes made and whether they worked), **Experiments** (hypothesis +
|
|
5703
5703
|
measured result), **Sprint** (current cycle's scope), **Inspiration** (other people's work worth
|
|
5704
|
-
studying)
|
|
5704
|
+
studying), **Skills** (reusable skill packages; each requires \`scripts/\` and at least one of
|
|
5705
|
+
\`references/\` or \`templates/\`, and may use both).
|
|
5705
5706
|
For a normal new narrative note, call **prepare-memory-write** first. It queries the live vault contract,
|
|
5706
5707
|
tag vocabulary, and natural neighbor vaults, and returns interlink candidates that must be read before
|
|
5707
5708
|
acceptance. Compose every returned template section, then call **memory-capture**, which validates the
|
|
@@ -5731,6 +5732,12 @@ Tags are live vocabulary, not improvised labels: **list-memory-tags** shows what
|
|
|
5731
5732
|
reusable, and has no exact, alias, or near-equivalent. Use **memory-backlinks**,
|
|
5732
5733
|
**memory-graph-universe**, and **memory-graph-path** to trace the linked universe across vaults.
|
|
5733
5734
|
|
|
5735
|
+
**Always inspect the complete tag inventory and related notes first.** Use hybrid Smart RAG by default:
|
|
5736
|
+
form 3 focused queries (2\u20134 when useful), fuse exact tag/metadata/vault/date and semantic matches into 50
|
|
5737
|
+
candidates, expand the top 8 seeds by one link/backlink hop with at most 5 neighbors each, then Jina-rerank
|
|
5738
|
+
the combined pool to the best 30. Graph neighbors are candidates, never automatic links; add only links
|
|
5739
|
+
supported by the note contents.
|
|
5740
|
+
|
|
5734
5741
|
Scrape deposits are raw evidence and therefore go to **Library** through **library-ingest**, with the full
|
|
5735
5742
|
Library template and source metadata. If the source contains durable applicable guidance, create a separate
|
|
5736
5743
|
Knowledge companion through prepare-memory-write + memory-capture and link it to the Library source with
|
|
@@ -8748,12 +8755,15 @@ var memoryCaptureTool_notePropsSchema = import_zod5.z.object({
|
|
|
8748
8755
|
type: import_zod5.z.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
8749
8756
|
domain: import_zod5.z.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
8750
8757
|
folder: import_zod5.z.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
8758
|
+
script_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: one or more Obsidian/internal paths under scripts/."),
|
|
8759
|
+
reference_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under references/."),
|
|
8760
|
+
template_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under templates/."),
|
|
8751
8761
|
parentMessageId: import_zod5.z.string().describe("Channel messages only: the path of the top-level message this is a reply to. Absent on top-level messages.")
|
|
8752
8762
|
}).partial().passthrough();
|
|
8753
8763
|
var MemoryCaptureSchema = {
|
|
8754
8764
|
id: "memory-capture",
|
|
8755
8765
|
upstreamName: "memoryCaptureTool",
|
|
8756
|
-
description: "Strict normal-create path for durable memory.
|
|
8766
|
+
description: "Strict normal-create path for durable memory. Before capture, list the complete tag vocabulary, call prepare-memory-write, run hybrid memory-search for related notes, and read the strongest link candidates. This tool refuses incomplete notes, writes through memory-put, registers canonical tags, and verifies persisted content and props. Reserve memory-put for low-level migrations or deliberate edits.",
|
|
8757
8767
|
input: {
|
|
8758
8768
|
vault: import_zod5.z.string(),
|
|
8759
8769
|
folder: import_zod5.z.string().optional(),
|
|
@@ -8811,7 +8821,7 @@ var MemoryQuestionsSchema = {
|
|
|
8811
8821
|
var PrepareMemoryWriteSchema = {
|
|
8812
8822
|
id: "prepare-memory-write",
|
|
8813
8823
|
upstreamName: "prepareMemoryWriteTool",
|
|
8814
|
-
description: "Mandatory planning pass for a normal new memory.
|
|
8824
|
+
description: "Mandatory planning pass for a normal new memory. First inspect the complete tag vocabulary with list-memory-tags; then this pass routes the note, returns the live template and natural vault relationships, resolves proposed tags, and shortlists interlinks. Use hybrid memory-search (3 focused queries, 50 fused candidates, bounded graph expansion, rerank to 30 by default) and read strong related notes before capture. This is an explicit AI workflow directive, not a claim of persisted call-order enforcement.",
|
|
8815
8825
|
input: {
|
|
8816
8826
|
title: import_zod5.z.string().min(1),
|
|
8817
8827
|
content: import_zod5.z.string().min(1),
|
|
@@ -8847,6 +8857,9 @@ var validateMemoryWriteTool_notePropsSchema = import_zod5.z.object({
|
|
|
8847
8857
|
type: import_zod5.z.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
8848
8858
|
domain: import_zod5.z.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
8849
8859
|
folder: import_zod5.z.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
8860
|
+
script_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: one or more Obsidian/internal paths under scripts/."),
|
|
8861
|
+
reference_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under references/."),
|
|
8862
|
+
template_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under templates/."),
|
|
8850
8863
|
parentMessageId: import_zod5.z.string().describe("Channel messages only: the path of the top-level message this is a reply to. Absent on top-level messages.")
|
|
8851
8864
|
}).partial().passthrough();
|
|
8852
8865
|
var ValidateMemoryWriteSchema = {
|
|
@@ -9302,6 +9315,39 @@ var LibraryIngestSchema = {
|
|
|
9302
9315
|
openWorldHint: true
|
|
9303
9316
|
}
|
|
9304
9317
|
};
|
|
9318
|
+
var bulkDeleteNotesTool_FilterSchema = import_zod5.z.object({
|
|
9319
|
+
column: import_zod5.z.enum(["path", "title", "kind", "source", "captured_at", "created_at", "updated_at", "revision"]).describe("Note column to filter on."),
|
|
9320
|
+
op: import_zod5.z.enum(["eq", "neq", "gt", "gte", "lt", "lte", "like", "prefix", "in"]).describe('"prefix" anchors to the start of the value only (e.g. path prefix "Mastra/opt-"); "like" matches anywhere in the value; "in" requires an array value.'),
|
|
9321
|
+
value: import_zod5.z.unknown().describe('Value to compare against. For "in", pass an array.')
|
|
9322
|
+
});
|
|
9323
|
+
var BulkDeleteNotesSchema = {
|
|
9324
|
+
id: "bulk-delete-notes",
|
|
9325
|
+
upstreamName: "bulkDeleteNotesTool",
|
|
9326
|
+
description: "Delete every note in one vault matching all given filters (ANDed) plus an optional tag match (ANY of the given tags) \u2014 at least one filter or tag is required; there is no unfiltered delete-all here (use delete-vault for that). Defaults to dryRun: true, previewing the match count and a sample of up to 20 matching notes without deleting anything. Pass dryRun: false to actually delete. DESTRUCTIVE and not recoverable when dryRun is false. Requires write scope. Refuses secure vaults (not indexed, filtering is meaningless there).",
|
|
9327
|
+
input: {
|
|
9328
|
+
vault: import_zod5.z.string().optional().describe("Vault to delete from. Optional; defaults to the session active vault, then the first vault the caller is entitled to."),
|
|
9329
|
+
filters: import_zod5.z.array(bulkDeleteNotesTool_FilterSchema).default([]).describe("Filters to AND together. At least one of filters/tags is required."),
|
|
9330
|
+
tags: import_zod5.z.array(import_zod5.z.string()).optional().describe("Match notes carrying ANY of these tags (ORed among themselves, ANDed with filters). At least one of filters/tags is required."),
|
|
9331
|
+
dryRun: import_zod5.z.boolean().default(true).describe("When true (default), previews matches without deleting anything. Pass false to actually delete.")
|
|
9332
|
+
},
|
|
9333
|
+
output: {
|
|
9334
|
+
ok: import_zod5.z.boolean().describe("True on success; false on auth/scope/validation error."),
|
|
9335
|
+
vault: import_zod5.z.string().optional().describe("The vault operated on (after defaulting). Present when ok is true."),
|
|
9336
|
+
dryRun: import_zod5.z.boolean().optional().describe("Echoes whether this call was a preview or a real delete."),
|
|
9337
|
+
matchCount: import_zod5.z.number().optional().describe("Number of notes matching the filters. Present on a dry run."),
|
|
9338
|
+
sample: import_zod5.z.array(import_zod5.z.object({ path: import_zod5.z.string(), title: import_zod5.z.string(), updatedAt: import_zod5.z.string() })).optional().describe("Up to 20 matching notes, most-recently-updated first. Present on a dry run."),
|
|
9339
|
+
deleted: import_zod5.z.number().optional().describe("Number of notes actually deleted. Present when dryRun is false."),
|
|
9340
|
+
deletedPaths: import_zod5.z.array(import_zod5.z.string()).optional().describe("Paths of the deleted notes. Present when dryRun is false."),
|
|
9341
|
+
error: import_zod5.z.string().optional().describe("Human-readable failure reason when ok is false.")
|
|
9342
|
+
},
|
|
9343
|
+
annotations: {
|
|
9344
|
+
title: "Bulk Delete Notes",
|
|
9345
|
+
readOnlyHint: false,
|
|
9346
|
+
destructiveHint: true,
|
|
9347
|
+
idempotentHint: false,
|
|
9348
|
+
openWorldHint: false
|
|
9349
|
+
}
|
|
9350
|
+
};
|
|
9305
9351
|
var DeleteNoteSchema = {
|
|
9306
9352
|
id: "delete-note",
|
|
9307
9353
|
upstreamName: "deleteNoteTool",
|
|
@@ -9383,6 +9429,9 @@ var getTool_notePropsSchema = import_zod5.z.object({
|
|
|
9383
9429
|
type: import_zod5.z.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
9384
9430
|
domain: import_zod5.z.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
9385
9431
|
folder: import_zod5.z.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
9432
|
+
script_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: one or more Obsidian/internal paths under scripts/."),
|
|
9433
|
+
reference_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under references/."),
|
|
9434
|
+
template_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under templates/."),
|
|
9386
9435
|
parentMessageId: import_zod5.z.string().describe("Channel messages only: the path of the top-level message this is a reply to. Absent on top-level messages.")
|
|
9387
9436
|
}).partial().passthrough();
|
|
9388
9437
|
var GetSchema = {
|
|
@@ -9471,6 +9520,9 @@ var putTool_notePropsSchema = import_zod5.z.object({
|
|
|
9471
9520
|
type: import_zod5.z.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
9472
9521
|
domain: import_zod5.z.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
9473
9522
|
folder: import_zod5.z.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
9523
|
+
script_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: one or more Obsidian/internal paths under scripts/."),
|
|
9524
|
+
reference_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under references/."),
|
|
9525
|
+
template_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under templates/."),
|
|
9474
9526
|
parentMessageId: import_zod5.z.string().describe("Channel messages only: the path of the top-level message this is a reply to. Absent on top-level messages.")
|
|
9475
9527
|
}).partial().passthrough();
|
|
9476
9528
|
var PutSchema = {
|
|
@@ -9515,44 +9567,64 @@ var PutSchema = {
|
|
|
9515
9567
|
openWorldHint: true
|
|
9516
9568
|
}
|
|
9517
9569
|
};
|
|
9570
|
+
var searchTool_primitiveValue = import_zod5.z.union([import_zod5.z.string(), import_zod5.z.number(), import_zod5.z.boolean()]);
|
|
9518
9571
|
var SearchSchema = {
|
|
9519
9572
|
id: "memory-search",
|
|
9520
9573
|
upstreamName: "searchTool",
|
|
9521
|
-
description: "
|
|
9574
|
+
description: "Default Smart RAG search across accessible memory. Form 2-4 focused query variants, combine semantic matches with exact vault/tag/date/kind/type/metadata filters, expand one bounded hop of outgoing links and backlinks around strong seeds, then rerank. Defaults: retrieve/fuse 50 candidates, 8 graph seeds, 5 neighbors per seed, rerank to 30. Graph neighbors are candidates, never automatic winners or links. Before tagging or writing, also call list-memory-tags to inspect the complete vocabulary and reuse existing tags; read strong related notes before selecting links.",
|
|
9522
9575
|
input: {
|
|
9523
|
-
vault: import_zod5.z.string().optional().describe(
|
|
9524
|
-
|
|
9525
|
-
),
|
|
9526
|
-
|
|
9527
|
-
|
|
9528
|
-
),
|
|
9529
|
-
|
|
9530
|
-
|
|
9531
|
-
|
|
9576
|
+
vault: import_zod5.z.string().optional().describe("Exact logical vault handle to search. Omit to search every entitled vault."),
|
|
9577
|
+
query: import_zod5.z.string().min(1).describe("A focused semantic reformulation of the request."),
|
|
9578
|
+
userMessage: import_zod5.z.string().optional().describe("Original human wording. Used as a distinct query variant when useful and logged for quality review."),
|
|
9579
|
+
queries: import_zod5.z.array(import_zod5.z.string().min(1)).min(2).max(4).optional().describe("Caller-provided focused query variants. The planner deduplicates these with query, original wording, and tag/entity terms."),
|
|
9580
|
+
entities: import_zod5.z.array(import_zod5.z.string().min(1)).max(20).optional().describe("Named entities or exact terms used to form a focused query variant."),
|
|
9581
|
+
tags: import_zod5.z.array(import_zod5.z.string().min(1)).max(20).optional().describe("Exact canonical tags used for tag-channel retrieval and filtering."),
|
|
9582
|
+
tagMode: import_zod5.z.enum(["any", "all"]).optional().describe("Whether a note must match any or all supplied tags. Default any."),
|
|
9583
|
+
kind: import_zod5.z.enum(["note", "library", "capture", "decision", "message"]).optional().describe("Exact persisted note-kind filter."),
|
|
9584
|
+
type: import_zod5.z.string().min(1).optional().describe("Exact props.type filter."),
|
|
9585
|
+
dateFrom: import_zod5.z.string().datetime().optional().describe("Inclusive lower bound for note updatedAt."),
|
|
9586
|
+
dateTo: import_zod5.z.string().datetime().optional().describe("Inclusive upper bound for note updatedAt."),
|
|
9587
|
+
metadata: import_zod5.z.record(searchTool_primitiveValue).optional().describe("Exact equality filters for primitive note props."),
|
|
9588
|
+
queryVariantCount: import_zod5.z.number().int().min(2).max(4).optional().describe("Number of variants. Default 3."),
|
|
9589
|
+
candidatePool: import_zod5.z.number().int().min(10).max(100).optional().describe("Total fused candidates before final reranking. Default 50."),
|
|
9590
|
+
graphSeedCount: import_zod5.z.number().int().min(0).max(20).optional().describe("Strong preliminary notes whose graph neighborhoods are considered. Default 8."),
|
|
9591
|
+
graphDepth: import_zod5.z.literal(1).optional().describe("Graph expansion depth. Bounded to exactly one hop."),
|
|
9592
|
+
graphNeighborsPerSeed: import_zod5.z.number().int().min(1).max(10).optional().describe("Maximum outgoing-link plus backlink neighbors per seed. Default 5."),
|
|
9593
|
+
rerankTopN: import_zod5.z.number().int().min(1).max(50).optional().describe("Final results retained after Jina reranking. Default 30."),
|
|
9594
|
+
topK: import_zod5.z.number().int().min(1).max(50).optional().describe("Deprecated compatibility alias for rerankTopN. Prefer rerankTopN; default remains 30."),
|
|
9595
|
+
includeShared: import_zod5.z.boolean().optional().describe("Also search individually accepted shares. Default true. Exact note metadata filters exclude shares without accessible metadata.")
|
|
9532
9596
|
},
|
|
9533
9597
|
output: {
|
|
9534
|
-
ok: import_zod5.z.boolean()
|
|
9535
|
-
vault: import_zod5.z.string().optional()
|
|
9536
|
-
vaultsSearched: import_zod5.z.array(import_zod5.z.string()).optional()
|
|
9537
|
-
|
|
9538
|
-
import_zod5.z.
|
|
9539
|
-
|
|
9540
|
-
|
|
9541
|
-
|
|
9542
|
-
|
|
9543
|
-
|
|
9544
|
-
|
|
9545
|
-
|
|
9546
|
-
).optional()
|
|
9547
|
-
|
|
9598
|
+
ok: import_zod5.z.boolean(),
|
|
9599
|
+
vault: import_zod5.z.string().optional(),
|
|
9600
|
+
vaultsSearched: import_zod5.z.array(import_zod5.z.string()).optional(),
|
|
9601
|
+
planner: import_zod5.z.object({
|
|
9602
|
+
queryVariants: import_zod5.z.array(import_zod5.z.string()),
|
|
9603
|
+
candidatePool: import_zod5.z.number(),
|
|
9604
|
+
graphSeedCount: import_zod5.z.number(),
|
|
9605
|
+
graphDepth: import_zod5.z.number(),
|
|
9606
|
+
graphNeighborsPerSeed: import_zod5.z.number(),
|
|
9607
|
+
rerankTopN: import_zod5.z.number(),
|
|
9608
|
+
seeds: import_zod5.z.array(import_zod5.z.string()),
|
|
9609
|
+
graphCandidatesAdded: import_zod5.z.number()
|
|
9610
|
+
}).optional(),
|
|
9611
|
+
rerank: import_zod5.z.object({ applied: import_zod5.z.boolean(), provider: import_zod5.z.string(), fallbackReason: import_zod5.z.string().optional() }).optional(),
|
|
9612
|
+
results: import_zod5.z.array(import_zod5.z.object({
|
|
9613
|
+
text: import_zod5.z.string(),
|
|
9614
|
+
source: import_zod5.z.string(),
|
|
9615
|
+
score: import_zod5.z.number(),
|
|
9616
|
+
originalScore: import_zod5.z.number(),
|
|
9617
|
+
rerankScore: import_zod5.z.number().optional(),
|
|
9618
|
+
vault: import_zod5.z.string().optional(),
|
|
9619
|
+
sharedBy: import_zod5.z.string().optional(),
|
|
9620
|
+
shareId: import_zod5.z.string().optional(),
|
|
9621
|
+
matchChannels: import_zod5.z.array(import_zod5.z.enum(["semantic", "tag", "metadata", "graph"])),
|
|
9622
|
+
matchedQueries: import_zod5.z.array(import_zod5.z.string()),
|
|
9623
|
+
graphFrom: import_zod5.z.array(import_zod5.z.string())
|
|
9624
|
+
})).optional(),
|
|
9625
|
+
error: import_zod5.z.string().optional()
|
|
9548
9626
|
},
|
|
9549
|
-
annotations: {
|
|
9550
|
-
title: "Semantic Memory Search",
|
|
9551
|
-
readOnlyHint: true,
|
|
9552
|
-
destructiveHint: false,
|
|
9553
|
-
idempotentHint: true,
|
|
9554
|
-
openWorldHint: true
|
|
9555
|
-
}
|
|
9627
|
+
annotations: { title: "Hybrid Smart RAG Memory Search", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }
|
|
9556
9628
|
};
|
|
9557
9629
|
var SuggestSchema = {
|
|
9558
9630
|
id: "memory-suggest",
|
|
@@ -9656,14 +9728,14 @@ var TemporalRecallSchema = {
|
|
|
9656
9728
|
var CreateScheduledActionSchema = {
|
|
9657
9729
|
id: "create-scheduled-action",
|
|
9658
9730
|
upstreamName: "createScheduledActionTool",
|
|
9659
|
-
description: "Create a Credit-metered scheduled action for an active MCP Scraper Starter plan or higher, in agent mode (default) or connection_sync mode. Each execution has a 75-Credit base charge; agent model usage is added at 1.5 times OpenRouter's actual reported cost. Agent mode follows the description and writes a result into the target vault. connection_sync deterministically runs approved read-only tools on bound service connections and ingests their data. Google Search Console syncs also upsert a typed tenant-owned performance table for exact filtering with table-query; discover its tableName by calling list_service_connections after the first successful run. Cadence 'once' runs a single time then completes permanently. Requires write access to the target vault.",
|
|
9731
|
+
description: "Create a Credit-metered scheduled action for an active MCP Scraper Starter plan or higher, in agent mode (default) or connection_sync mode. Each execution has a 75-Credit base charge; agent model usage is added at 1.5 times OpenRouter's actual reported cost. Agent mode follows the description and writes a result into the target vault. connection_sync deterministically runs the approved read-only tools on bound service connections and ingests their data; it requires at least one connection to be bound before execution. Google Search Console syncs also upsert a typed tenant-owned performance table for exact filtering with table-query; discover its tableName by calling list_service_connections after the first successful run. Cadence 'once' runs a single time then completes permanently. Requires write access to the target vault.",
|
|
9660
9732
|
input: {
|
|
9661
9733
|
description: import_zod5.z.string().min(1).describe("Free-text description of what this action should do each time it runs."),
|
|
9662
9734
|
vault: import_zod5.z.string().min(1).describe("The vault this action writes its results into. You must already have write access to it."),
|
|
9663
9735
|
cadence: import_zod5.z.enum(["once", "daily", "weekly", "monthly"]).describe('How often this action runs. "once" fires a single time and then completes.'),
|
|
9664
9736
|
executionMode: import_zod5.z.enum(["agent", "connection_sync"]).default("agent").describe(`How to execute each run. "agent" (default) lets an agent follow the description. "connection_sync" deterministically ingests data from the schedule's bound connections using only their approved read-only tools; bind at least one connection before it runs. Search Console connection_sync also maintains a typed table exposed as the connection tableName.`),
|
|
9665
9737
|
timeOfDay: import_zod5.z.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/).optional().describe("24-hour HH:MM clock time to run at, in the given timezone. Optional \u2014 omit to run at any time during the period (matches prior default behavior)."),
|
|
9666
|
-
timezone: import_zod5.z.string().optional().describe(
|
|
9738
|
+
timezone: import_zod5.z.string().optional().describe(`IANA timezone name, e.g. "America/Denver". Only meaningful together with timeOfDay or deployDate. Omit to use the account's default timezone (set via set-schedule-defaults), falling back to UTC.`),
|
|
9667
9739
|
deployDate: import_zod5.z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional().describe('Calendar date (YYYY-MM-DD, in the given timezone) this action should first become eligible to run \u2014 its deployment/start date. For recurring cadences, the first occurrence lands on or after this date; every later occurrence still follows the normal cadence. For cadence "once", this (combined with timeOfDay if given) is exactly what day it fires. Omit to start immediately.')
|
|
9668
9740
|
},
|
|
9669
9741
|
output: {
|
|
@@ -9725,7 +9797,7 @@ var GetScheduleLinkSchema = {
|
|
|
9725
9797
|
var GetScheduleStatusSchema = {
|
|
9726
9798
|
id: "get-schedule-status",
|
|
9727
9799
|
upstreamName: "getScheduleStatusTool",
|
|
9728
|
-
description: "Get the Credit-metered Scheduled Actions access and
|
|
9800
|
+
description: "Get the Credit-metered Scheduled Actions access, billing policy, and default timezone. Scheduling requires an active MCP Scraper Starter plan or higher but has no separate subscription: each execution has a 75-Credit base charge, and agent model usage is billed at 1.5 times OpenRouter's actual reported cost.",
|
|
9729
9801
|
input: {},
|
|
9730
9802
|
output: {
|
|
9731
9803
|
ok: import_zod5.z.boolean(),
|
|
@@ -9801,7 +9873,7 @@ var PauseScheduledActionSchema = {
|
|
|
9801
9873
|
var ProposeScheduledActionSchema = {
|
|
9802
9874
|
id: "propose-scheduled-action",
|
|
9803
9875
|
upstreamName: "proposeScheduledActionTool",
|
|
9804
|
-
description: "Turn freeform text describing what you want automated into a structured proposal (description, vault, cadence) for review and confirmation via create-scheduled-action \u2014 this is the propose step only; nothing is created here.",
|
|
9876
|
+
description: "Turn freeform text describing what you want automated into a structured proposal (description, vault, cadence, time of day, timezone) for review and confirmation via create-scheduled-action \u2014 this is the propose step only; nothing is created here.",
|
|
9805
9877
|
input: {
|
|
9806
9878
|
request: import_zod5.z.string().min(1).describe("Freeform text describing what you want scheduled.")
|
|
9807
9879
|
},
|
|
@@ -9810,6 +9882,8 @@ var ProposeScheduledActionSchema = {
|
|
|
9810
9882
|
description: import_zod5.z.string().optional().describe("Proposed description \u2014 edit freely before confirming."),
|
|
9811
9883
|
vault: import_zod5.z.string().optional().describe("Proposed target vault."),
|
|
9812
9884
|
cadence: import_zod5.z.string().optional().describe("Proposed cadence: once, daily, weekly, or monthly."),
|
|
9885
|
+
timeOfDay: import_zod5.z.string().optional().describe("Proposed 24-hour HH:MM run time, when the request named one."),
|
|
9886
|
+
timezone: import_zod5.z.string().optional().describe("Proposed IANA timezone \u2014 from the request, or the account default when the request named a time without a zone."),
|
|
9813
9887
|
rationale: import_zod5.z.string().optional().describe("Why these choices were made \u2014 read this before confirming."),
|
|
9814
9888
|
error: import_zod5.z.string().optional()
|
|
9815
9889
|
},
|
|
@@ -9824,7 +9898,7 @@ var ProposeScheduledActionSchema = {
|
|
|
9824
9898
|
var ResumeScheduledActionSchema = {
|
|
9825
9899
|
id: "resume-scheduled-action",
|
|
9826
9900
|
upstreamName: "resumeScheduledActionTool",
|
|
9827
|
-
description: "Resume a paused scheduled action. Its next run is computed fresh from now, not backfilled for time spent paused.",
|
|
9901
|
+
description: "Resume a paused scheduled action for an active MCP Scraper Starter plan or higher. Its next run is computed fresh from now, not backfilled for time spent paused.",
|
|
9828
9902
|
input: {
|
|
9829
9903
|
id: import_zod5.z.string().min(1).describe("The scheduled action id.")
|
|
9830
9904
|
},
|
|
@@ -9860,14 +9934,34 @@ var RevokeScheduleLinkSchema = {
|
|
|
9860
9934
|
openWorldHint: false
|
|
9861
9935
|
}
|
|
9862
9936
|
};
|
|
9937
|
+
var SetScheduleDefaultsSchema = {
|
|
9938
|
+
id: "set-schedule-defaults",
|
|
9939
|
+
upstreamName: "setScheduleDefaultsTool",
|
|
9940
|
+
description: "Set your default timezone for scheduled actions. Any schedule you later create with a time of day but no explicit timezone uses this default instead of UTC. Pass null to clear it back to UTC.",
|
|
9941
|
+
input: {
|
|
9942
|
+
defaultTimezone: import_zod5.z.string().nullable().describe('IANA timezone name, e.g. "America/Denver". null clears the default (new schedules fall back to UTC).')
|
|
9943
|
+
},
|
|
9944
|
+
output: {
|
|
9945
|
+
ok: import_zod5.z.boolean(),
|
|
9946
|
+
defaultTimezone: import_zod5.z.string().nullable().optional().describe("The default timezone now in effect; null means UTC."),
|
|
9947
|
+
error: import_zod5.z.string().optional()
|
|
9948
|
+
},
|
|
9949
|
+
annotations: {
|
|
9950
|
+
title: "Set Schedule Defaults",
|
|
9951
|
+
readOnlyHint: false,
|
|
9952
|
+
destructiveHint: false,
|
|
9953
|
+
idempotentHint: true,
|
|
9954
|
+
openWorldHint: false
|
|
9955
|
+
}
|
|
9956
|
+
};
|
|
9863
9957
|
var SetScheduleEntitlementSchema = {
|
|
9864
9958
|
id: "set-schedule-entitlement",
|
|
9865
9959
|
upstreamName: "setScheduleEntitlementTool",
|
|
9866
|
-
description: "Admin-only scheduled-action credential provisioning and historical-row recovery.
|
|
9960
|
+
description: "Admin-only scheduled-action credential provisioning and historical-row recovery. Use mcpScraperApiKey to rotate the encrypted delegated key without changing legacy enabled/quota fields. The former entitlement and quota values are retained only for migration compatibility and are not runtime access controls; paid-plan access is validated against MCP Scraper directly.",
|
|
9867
9961
|
input: {
|
|
9868
9962
|
granteeIdentity: import_zod5.z.string().min(1).describe("Identity whose scheduling entitlement is being set (e.g. an email)."),
|
|
9869
9963
|
enabled: import_zod5.z.boolean().optional().describe("Historical entitlement value for migration/recovery only. Omit to preserve the stored value."),
|
|
9870
|
-
quotaPerPeriod: import_zod5.z.number().optional().describe("Historical monthly
|
|
9964
|
+
quotaPerPeriod: import_zod5.z.number().optional().describe("Historical monthly quota for migration/recovery only. Omit to preserve the stored value."),
|
|
9871
9965
|
mcpScraperApiKey: import_zod5.z.string().optional().describe("The identity's mcp-scraper API key, stored encrypted, used to reach mcp-scraper tools during scheduled-action execution.")
|
|
9872
9966
|
},
|
|
9873
9967
|
output: {
|
|
@@ -10112,9 +10206,9 @@ var QueryTableSchema = {
|
|
|
10112
10206
|
var ListTagsSchema = {
|
|
10113
10207
|
id: "list-memory-tags",
|
|
10114
10208
|
upstreamName: "listTagsTool",
|
|
10115
|
-
description: "List the live canonical tag vocabulary, aliases, usage counts, and per-vault distribution.
|
|
10209
|
+
description: "List the complete live canonical tag vocabulary, aliases, usage counts, and per-vault distribution. Always call this before proposing, resolving, or writing tags so the AI can reuse existing concepts and add only central, reusable concepts that are genuinely missing.",
|
|
10116
10210
|
input: {
|
|
10117
|
-
includeDeprecated: import_zod5.z.boolean().optional()
|
|
10211
|
+
includeDeprecated: import_zod5.z.boolean().optional().describe("Include deprecated tags as well as active tags. Defaults true so the AI sees the complete vocabulary; pass false only for an active-only display.")
|
|
10118
10212
|
},
|
|
10119
10213
|
output: {
|
|
10120
10214
|
ok: import_zod5.z.boolean(),
|
|
@@ -10126,7 +10220,7 @@ var ListTagsSchema = {
|
|
|
10126
10220
|
var ResolveTagsSchema = {
|
|
10127
10221
|
id: "resolve-memory-tags",
|
|
10128
10222
|
upstreamName: "resolveTagsTool",
|
|
10129
|
-
description: "Resolve proposed concepts against the live tag vocabulary. Returns reuse, create, or omit
|
|
10223
|
+
description: "Resolve proposed concepts against the live tag vocabulary. Always inspect the complete vocabulary with list-memory-tags first. Returns reuse, create, or omit; a new tag is appropriate only when no equivalent exists and the concept is central and reusable.",
|
|
10130
10224
|
input: {
|
|
10131
10225
|
candidates: import_zod5.z.array(import_zod5.z.object({ tag: import_zod5.z.string().min(1), central: import_zod5.z.boolean().optional(), reusable: import_zod5.z.boolean().optional(), description: import_zod5.z.string().optional() })).min(1).max(20)
|
|
10132
10226
|
},
|
|
@@ -10140,7 +10234,7 @@ var ResolveTagsSchema = {
|
|
|
10140
10234
|
var UpsertTagSchema = {
|
|
10141
10235
|
id: "upsert-memory-tag",
|
|
10142
10236
|
upstreamName: "upsertTagTool",
|
|
10143
|
-
description: "Define or curate one canonical tag, its meaning, aliases, and lifecycle.
|
|
10237
|
+
description: "Define or curate one canonical tag, its meaning, aliases, and lifecycle. Inspect the complete vocabulary with list-memory-tags first; use only after resolve-memory-tags returns create, or to merge/deprecate vocabulary intentionally. Requires write scope.",
|
|
10144
10238
|
input: {
|
|
10145
10239
|
tag: import_zod5.z.string().min(1),
|
|
10146
10240
|
description: import_zod5.z.string().optional(),
|
|
@@ -10296,17 +10390,17 @@ var ListVaultsSchema = {
|
|
|
10296
10390
|
var ProvisionDefaultsSchema = {
|
|
10297
10391
|
id: "provision-defaults",
|
|
10298
10392
|
upstreamName: "provisionDefaultsTool",
|
|
10299
|
-
description: "Provision the standard
|
|
10393
|
+
description: "Provision the standard 14-vault memory structure (Ideas, Inspiration, Knowledge, Library, People, Communications, Calendar, Tasks, Projects, Issues, Improvement Log, Experiments, Sprint, Skills) for an identity. Idempotent \u2014 existing vaults are untouched. Optionally issues a fresh API key entitled to all 14. Requires admin scope.",
|
|
10300
10394
|
input: {
|
|
10301
|
-
granteeIdentity: import_zod5.z.string().min(1).describe("Identity that should OWN the
|
|
10302
|
-
issueKey: import_zod5.z.boolean().optional().describe("When true, also issue a new API key for the identity entitled to all
|
|
10395
|
+
granteeIdentity: import_zod5.z.string().min(1).describe("Identity that should OWN the 14 default vaults (e.g. an email or user id)."),
|
|
10396
|
+
issueKey: import_zod5.z.boolean().optional().describe("When true, also issue a new API key for the identity entitled to all 14 vaults and return its secret once. Default false."),
|
|
10303
10397
|
plan: import_zod5.z.enum(["free", "pro", "team", "enterprise"]).optional().describe("Subscription plan carried by the issued key. Optional; defaults to free. Only used when issueKey is true.")
|
|
10304
10398
|
},
|
|
10305
10399
|
output: {
|
|
10306
10400
|
ok: import_zod5.z.boolean().describe("True when provisioning succeeded; false on auth/scope error."),
|
|
10307
10401
|
identity: import_zod5.z.string().optional().describe("Identity the vaults were provisioned for."),
|
|
10308
|
-
created: import_zod5.z.array(import_zod5.z.string()).optional().describe("Vault names newly created on this call (empty when all
|
|
10309
|
-
vaults: import_zod5.z.array(import_zod5.z.string()).optional().describe("All
|
|
10402
|
+
created: import_zod5.z.array(import_zod5.z.string()).optional().describe("Vault names newly created on this call (empty when all 14 already existed)."),
|
|
10403
|
+
vaults: import_zod5.z.array(import_zod5.z.string()).optional().describe("All 14 default vault names the identity now owns."),
|
|
10310
10404
|
keyId: import_zod5.z.string().optional().describe("Stable id of the issued key. Present only when issueKey was true."),
|
|
10311
10405
|
secret: import_zod5.z.string().optional().describe("The issued key secret \u2014 RETURNED ONCE. Present only when issueKey was true."),
|
|
10312
10406
|
plan: import_zod5.z.string().optional().describe("Plan assigned to the issued key. Present only when issueKey was true."),
|
|
@@ -10343,9 +10437,9 @@ var RouteMemorySchema = {
|
|
|
10343
10437
|
var VideoAnalyzeStartSchema = {
|
|
10344
10438
|
id: "video-analyze-start",
|
|
10345
10439
|
upstreamName: "videoAnalyzeStartTool",
|
|
10346
|
-
description: "Start a deep async breakdown of a video: samples frames, transcribes audio, and runs parallel analyses (summary, pacing, WPM, topic outline, key points, hook analysis, visual style, replication recipe) into one saved report. Returns a runId immediately \u2014 poll video-analyze-status.
|
|
10440
|
+
description: "Start a deep async breakdown of a video: samples frames, transcribes audio, and runs parallel analyses (summary, pacing, WPM, topic outline, key points, hook analysis, visual style, replication recipe) into one saved report. Returns a runId immediately \u2014 poll video-analyze-status. Accepts a YouTube, Facebook, Instagram, TikTok, or Vimeo URL directly (downloaded for you), or a direct video file URL (.mp4/.webm/.mov). Videos up to 1 hour.",
|
|
10347
10441
|
input: {
|
|
10348
|
-
sourceUrl: import_zod5.z.string().url().describe("
|
|
10442
|
+
sourceUrl: import_zod5.z.string().url().describe("A YouTube, Facebook, Instagram, TikTok, or Vimeo URL (downloaded automatically), or a direct video file URL (.mp4/.webm/.mov/.gif)."),
|
|
10349
10443
|
intervalS: import_zod5.z.number().min(1).max(30).optional().describe("Preferred seconds between sampled frames (1-30). Default 2. For long videos the interval is automatically widened so the whole video is covered within the frame budget. Lower = denser sampling where the video is short enough to allow it."),
|
|
10350
10444
|
maxFrames: import_zod5.z.number().int().min(1).max(480).optional().describe("Hard cap on frames analyzed (\u2264480). Default 120. Frames are spread across the whole duration; lowest sampling interval is 1 second, so short videos cannot use more frames than their length in seconds."),
|
|
10351
10445
|
detail: import_zod5.z.enum(["fast", "standard", "deep"]).optional().describe("Analysis depth. Default standard."),
|
|
@@ -10482,6 +10576,7 @@ var MEMORY_TOOL_SCHEMAS = [
|
|
|
10482
10576
|
GraphPathSchema,
|
|
10483
10577
|
GraphUniverseSchema,
|
|
10484
10578
|
LibraryIngestSchema,
|
|
10579
|
+
BulkDeleteNotesSchema,
|
|
10485
10580
|
DeleteNoteSchema,
|
|
10486
10581
|
ExportSchema,
|
|
10487
10582
|
GetSchema,
|
|
@@ -10500,6 +10595,7 @@ var MEMORY_TOOL_SCHEMAS = [
|
|
|
10500
10595
|
ProposeScheduledActionSchema,
|
|
10501
10596
|
ResumeScheduledActionSchema,
|
|
10502
10597
|
RevokeScheduleLinkSchema,
|
|
10598
|
+
SetScheduleDefaultsSchema,
|
|
10503
10599
|
SetScheduleEntitlementSchema,
|
|
10504
10600
|
CostUsageSchema,
|
|
10505
10601
|
StorageUsageSchema,
|