mcp-scraper 0.24.0 → 0.26.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 +5044 -2895
- package/dist/bin/api-server.cjs.map +1 -1
- package/dist/bin/api-server.js +2 -2
- 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 +2 -2
- package/dist/bin/mcp-scraper-install.cjs.map +1 -1
- package/dist/bin/mcp-scraper-install.js +2 -2
- package/dist/bin/mcp-stdio-server.cjs +205 -61
- package/dist/bin/mcp-stdio-server.cjs.map +1 -1
- package/dist/bin/mcp-stdio-server.js +4 -4
- package/dist/{chunk-PNBYYAEK.js → chunk-3ZZOLQ6A.js} +2 -2
- package/dist/{chunk-JHI373VB.js → chunk-4767BA2O.js} +85 -3
- package/dist/chunk-4767BA2O.js.map +1 -0
- package/dist/chunk-7PYRJ7CB.js +7 -0
- package/dist/chunk-7PYRJ7CB.js.map +1 -0
- package/dist/{chunk-YNHPZU6B.js → chunk-TBRX7VOP.js} +2 -2
- package/dist/{chunk-YNHPZU6B.js.map → chunk-TBRX7VOP.js.map} +1 -1
- package/dist/{chunk-SUPUHPJS.js → chunk-UMTBCKHH.js} +200 -62
- package/dist/chunk-UMTBCKHH.js.map +1 -0
- package/dist/{server-I5U3OUZZ.js → server-H4PPYTOM.js} +2484 -580
- package/dist/server-H4PPYTOM.js.map +1 -0
- package/dist/{site-extract-repository-2QQSL2QC.js → site-extract-repository-O36SIFI2.js} +3 -3
- package/dist/{worker-RV2TYXE3.js → worker-E3KHQH2F.js} +2 -2
- 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 +710 -55
- package/docs/specs/main-mcp-integration-ownership-spec.md +1164 -0
- package/package.json +6 -2
- package/dist/chunk-CDLHUCMT.js +0 -7
- package/dist/chunk-CDLHUCMT.js.map +0 -1
- package/dist/chunk-JHI373VB.js.map +0 -1
- package/dist/chunk-SUPUHPJS.js.map +0 -1
- package/dist/server-I5U3OUZZ.js.map +0 -1
- /package/dist/{chunk-PNBYYAEK.js.map → chunk-3ZZOLQ6A.js.map} +0 -0
- /package/dist/{site-extract-repository-2QQSL2QC.js.map → site-extract-repository-O36SIFI2.js.map} +0 -0
- /package/dist/{worker-RV2TYXE3.js.map → worker-E3KHQH2F.js.map} +0 -0
|
@@ -351,7 +351,12 @@ var HttpMcpToolExecutor = class {
|
|
|
351
351
|
return this.call("/billing/credits", input);
|
|
352
352
|
}
|
|
353
353
|
listServiceConnections(input) {
|
|
354
|
-
return this.getJson("/
|
|
354
|
+
return this.getJson("/integrations");
|
|
355
|
+
}
|
|
356
|
+
testServiceConnection(input) {
|
|
357
|
+
return this.call(`/integrations/${encodeURIComponent(input.connectionId)}/test`, {
|
|
358
|
+
...input.providerConfigKey ? { providerConfigKey: input.providerConfigKey } : {}
|
|
359
|
+
});
|
|
355
360
|
}
|
|
356
361
|
slackSendMessage(input) {
|
|
357
362
|
return this.call("/schedule-connections/actions/slack/send-message", input);
|
|
@@ -366,13 +371,13 @@ var HttpMcpToolExecutor = class {
|
|
|
366
371
|
return this.call("/schedule-connections/actions/zoom/create-meeting", input);
|
|
367
372
|
}
|
|
368
373
|
readServiceConnection(input) {
|
|
369
|
-
return this.call("/
|
|
374
|
+
return this.call("/integrations/actions/read", input);
|
|
370
375
|
}
|
|
371
376
|
importServiceConnectionToMemory(input) {
|
|
372
377
|
return this.call("/schedule-connections/actions/import-memory", input);
|
|
373
378
|
}
|
|
374
379
|
describeServiceConnectionTool(input) {
|
|
375
|
-
return this.call("/
|
|
380
|
+
return this.call("/integrations/actions/describe", input);
|
|
376
381
|
}
|
|
377
382
|
exportConnectedServiceData(input) {
|
|
378
383
|
const timeoutMs = this.httpTimeoutOverrideMs ?? 29e4;
|
|
@@ -386,7 +391,7 @@ var HttpMcpToolExecutor = class {
|
|
|
386
391
|
return this.call("/schedule-connections/actions/export-download", input);
|
|
387
392
|
}
|
|
388
393
|
callServiceConnectionAction(input) {
|
|
389
|
-
return this.call("/
|
|
394
|
+
return this.call("/integrations/actions/call", input);
|
|
390
395
|
}
|
|
391
396
|
setScheduledActionConnections(input) {
|
|
392
397
|
return this.call(`/schedule-actions/${encodeURIComponent(input.scheduleActionId)}/connections`, {
|
|
@@ -556,7 +561,7 @@ render();
|
|
|
556
561
|
}
|
|
557
562
|
|
|
558
563
|
// src/version.ts
|
|
559
|
-
var PACKAGE_VERSION = "0.
|
|
564
|
+
var PACKAGE_VERSION = "0.26.0";
|
|
560
565
|
|
|
561
566
|
// src/mcp/browser-agent-tool-schemas.ts
|
|
562
567
|
var import_zod = require("zod");
|
|
@@ -2871,6 +2876,12 @@ var SCHEDULED_RUN_BASE_CREDITS = 75;
|
|
|
2871
2876
|
var SCHEDULED_RUN_BASE_MC = SCHEDULED_RUN_BASE_CREDITS * MC_PER_CREDIT;
|
|
2872
2877
|
var SCHEDULED_AGENT_LLM_MARKUP_BPS = 15e3;
|
|
2873
2878
|
var SCHEDULED_AGENT_LLM_MARKUP = SCHEDULED_AGENT_LLM_MARKUP_BPS / BILLING_BASIS_POINTS;
|
|
2879
|
+
var CONNECTED_FUNCTION_RUN_CREDITS = 2;
|
|
2880
|
+
var CONNECTED_PROXY_REQUEST_CREDITS = 2;
|
|
2881
|
+
var CONNECTED_COMPUTE_CREDITS_PER_SECOND = 5;
|
|
2882
|
+
var CONNECTED_FUNCTION_RUN_MC = CONNECTED_FUNCTION_RUN_CREDITS * MC_PER_CREDIT;
|
|
2883
|
+
var CONNECTED_PROXY_REQUEST_MC = CONNECTED_PROXY_REQUEST_CREDITS * MC_PER_CREDIT;
|
|
2884
|
+
var CONNECTED_COMPUTE_MC_PER_SECOND = CONNECTED_COMPUTE_CREDITS_PER_SECOND * MC_PER_CREDIT;
|
|
2874
2885
|
var CREDIT_COST_CATALOG = [
|
|
2875
2886
|
{
|
|
2876
2887
|
key: "serp",
|
|
@@ -5673,6 +5684,9 @@ Multi-step orchestrations \u2014 prefer these over hand-chaining primitives when
|
|
|
5673
5684
|
is \`done\`.
|
|
5674
5685
|
|
|
5675
5686
|
## Notes
|
|
5687
|
+
- Connected-service lifecycle and availability are separate. A connection can remain \`connected\` while
|
|
5688
|
+
\`operationalStatus\` is \`unavailable\`; call \`test_service_connection\` before recommending reconnect.
|
|
5689
|
+
Recommend reconnect only when \`reconnectRequired\` is true.
|
|
5676
5690
|
- Bulk / full-site crawls: call \`extract_site\` with \`rotateProxies:true\` for blocked or rate-limited
|
|
5677
5691
|
sites. It returns a saved folder/artifact plus a summary, not the full content inline.
|
|
5678
5692
|
- Browser sessions and media transcription cost credits and take longer \u2014 prefer the cheapest tool that
|
|
@@ -5681,6 +5695,10 @@ Multi-step orchestrations \u2014 prefer these over hand-chaining primitives when
|
|
|
5681
5695
|
when connected Graph media did not provide a playable source. It is not a bypass for URL/SSRF restrictions.
|
|
5682
5696
|
- Large results are saved to disk or an artifact and returned as a summary plus a path or artifactId;
|
|
5683
5697
|
read it back for full detail rather than expecting the whole payload inline.
|
|
5698
|
+
- Before using a connected account, call \`list_service_connections\` and match the intended provider-side
|
|
5699
|
+
identity from \`providerAccountEmail\` or \`providerAccountName\`, not the MCP Scraper login. If
|
|
5700
|
+
\`providerIdentityStatus\` is \`unavailable\`, ask the person to refresh that connection before assuming
|
|
5701
|
+
which external account it represents.
|
|
5684
5702
|
- For Google Search Console, use \`export_connected_service_data\` with
|
|
5685
5703
|
\`dataset:"search_console_performance"\` when the person asks for a fresh JSONL download. When they
|
|
5686
5704
|
ask to schedule ingestion or repeatedly filter historical rows, create a \`connection_sync\` schedule,
|
|
@@ -5693,7 +5711,7 @@ Multi-step orchestrations \u2014 prefer these over hand-chaining primitives when
|
|
|
5693
5711
|
|
|
5694
5712
|
## Memory
|
|
5695
5713
|
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
|
|
5714
|
+
scheduled actions, tables, channels) backed by memory.mcpscraper.dev. Every account starts with 14
|
|
5697
5715
|
vaults \u2014 call **list-vaults** to see what exists before creating anything new. Pick the vault whose job
|
|
5698
5716
|
matches the content: **Ideas** (unvalidated concepts), **Knowledge** (distilled lessons/how-tos),
|
|
5699
5717
|
**Library** (raw source material \u2014 articles, transcripts), **People** (one durable note per person/org),
|
|
@@ -5701,7 +5719,8 @@ matches the content: **Ideas** (unvalidated concepts), **Knowledge** (distilled
|
|
|
5701
5719
|
(action items with a status), **Projects** (durable named initiatives), **Issues** (something broken),
|
|
5702
5720
|
**Improvement Log** (receipts of changes made and whether they worked), **Experiments** (hypothesis +
|
|
5703
5721
|
measured result), **Sprint** (current cycle's scope), **Inspiration** (other people's work worth
|
|
5704
|
-
studying)
|
|
5722
|
+
studying), **Skills** (reusable skill packages; each requires \`scripts/\` and at least one of
|
|
5723
|
+
\`references/\` or \`templates/\`, and may use both).
|
|
5705
5724
|
For a normal new narrative note, call **prepare-memory-write** first. It queries the live vault contract,
|
|
5706
5725
|
tag vocabulary, and natural neighbor vaults, and returns interlink candidates that must be read before
|
|
5707
5726
|
acceptance. Compose every returned template section, then call **memory-capture**, which validates the
|
|
@@ -5731,6 +5750,12 @@ Tags are live vocabulary, not improvised labels: **list-memory-tags** shows what
|
|
|
5731
5750
|
reusable, and has no exact, alias, or near-equivalent. Use **memory-backlinks**,
|
|
5732
5751
|
**memory-graph-universe**, and **memory-graph-path** to trace the linked universe across vaults.
|
|
5733
5752
|
|
|
5753
|
+
**Always inspect the complete tag inventory and related notes first.** Use hybrid Smart RAG by default:
|
|
5754
|
+
form 3 focused queries (2\u20134 when useful), fuse exact tag/metadata/vault/date and semantic matches into 50
|
|
5755
|
+
candidates, expand the top 8 seeds by one link/backlink hop with at most 5 neighbors each, then Jina-rerank
|
|
5756
|
+
the combined pool to the best 30. Graph neighbors are candidates, never automatic links; add only links
|
|
5757
|
+
supported by the note contents.
|
|
5758
|
+
|
|
5734
5759
|
Scrape deposits are raw evidence and therefore go to **Library** through **library-ingest**, with the full
|
|
5735
5760
|
Library template and source metadata. If the source contains durable applicable guidance, create a separate
|
|
5736
5761
|
Knowledge companion through prepare-memory-write + memory-capture and link it to the Library source with
|
|
@@ -7129,8 +7154,14 @@ var ListServiceConnectionsOutputSchema = {
|
|
|
7129
7154
|
connectionId: import_zod4.z.string(),
|
|
7130
7155
|
providerConfigKey: import_zod4.z.string(),
|
|
7131
7156
|
provider: import_zod4.z.string().nullable().optional(),
|
|
7132
|
-
label: import_zod4.z.string(),
|
|
7157
|
+
label: import_zod4.z.string().describe("Best verified provider-side account label. This is never derived from the MCP Scraper login email."),
|
|
7158
|
+
providerAccountId: import_zod4.z.string().nullable().describe("Provider-side account or principal identifier when safely discoverable. This is not the MCP Scraper user id."),
|
|
7159
|
+
providerAccountEmail: import_zod4.z.string().nullable().describe("Actual provider-side email for the authorized account when the provider exposes and verifies it. Null for organization-only accounts or unavailable identity scopes."),
|
|
7160
|
+
providerAccountName: import_zod4.z.string().nullable().describe("Actual provider-side person, workspace, channel, or organization name when available."),
|
|
7161
|
+
providerIdentityStatus: import_zod4.z.enum(["pending", "verified", "unavailable"]).describe("Whether provider-side account identity discovery is pending, verified, or unavailable under the current OAuth grant. Reconnect when unavailable after identity scopes were added."),
|
|
7133
7162
|
status: import_zod4.z.string(),
|
|
7163
|
+
lifecycleStatus: import_zod4.z.enum(["pending", "connected", "needs_reauth", "disconnecting", "disconnected"]).optional().describe("Credential lifecycle. This is separate from current provider availability."),
|
|
7164
|
+
operationalStatus: import_zod4.z.enum(["unknown", "available", "degraded", "unavailable"]).optional().describe("Last observed provider transport availability. Unavailable does not imply reconnect is required."),
|
|
7134
7165
|
reconnectRequired: import_zod4.z.boolean().optional(),
|
|
7135
7166
|
transport: import_zod4.z.enum(["nango", "remote_mcp"]).describe("Credential transport behind this tenant-scoped connection. Tokens and API keys are never returned."),
|
|
7136
7167
|
actionsEnabled: import_zod4.z.boolean(),
|
|
@@ -7153,10 +7184,27 @@ var ListServiceConnectionsOutputSchema = {
|
|
|
7153
7184
|
mcpEndpoint: import_zod4.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."),
|
|
7154
7185
|
schemaDiscovery: import_zod4.z.enum(["connection_tools_list", "compatibility_describe"]).describe("How clients discover this connection's exact live provider schemas."),
|
|
7155
7186
|
toolRevision: import_zod4.z.string().nullable().describe("Opaque revision of the resolved live tool catalog, when available. It changes when provider tools or policy change."),
|
|
7187
|
+
lastCheckedAt: import_zod4.z.string().nullable().optional(),
|
|
7188
|
+
lastSuccessfulCallAt: import_zod4.z.string().nullable().optional(),
|
|
7189
|
+
lastFailureAt: import_zod4.z.string().nullable().optional(),
|
|
7190
|
+
lastFailureCode: import_zod4.z.string().nullable().optional(),
|
|
7191
|
+
lastFailureRetryable: import_zod4.z.boolean().nullable().optional(),
|
|
7156
7192
|
vaultName: import_zod4.z.string().nullable().describe("Memory vault this connection's digest writes into, if it has run at least once. Search it with memory-search."),
|
|
7157
7193
|
tableName: import_zod4.z.string().nullable().describe("Tenant-owned structured table populated by this connection, if available. For scheduled Google Search Console connection_sync runs, this is a typed performance table with site_url, date, query, page, country, device, clicks, impressions, ctr, and position. Call table-describe, then filter or sort it with table-query.")
|
|
7158
7194
|
}))
|
|
7159
7195
|
};
|
|
7196
|
+
var TestServiceConnectionInputSchema = {
|
|
7197
|
+
connectionId: import_zod4.z.string().min(1).describe("A tenant-owned connectionId from list_service_connections."),
|
|
7198
|
+
providerConfigKey: import_zod4.z.string().min(1).optional().describe("Optional provider hint from list_service_connections.")
|
|
7199
|
+
};
|
|
7200
|
+
var TestServiceConnectionOutputSchema = {
|
|
7201
|
+
ok: import_zod4.z.boolean(),
|
|
7202
|
+
operationalStatus: import_zod4.z.enum(["available", "unavailable"]).optional(),
|
|
7203
|
+
checkedAt: import_zod4.z.string().optional(),
|
|
7204
|
+
toolCount: import_zod4.z.number().int().min(0).optional(),
|
|
7205
|
+
code: import_zod4.z.string().optional(),
|
|
7206
|
+
error: NullableString2
|
|
7207
|
+
};
|
|
7160
7208
|
var ReadServiceConnectionInputSchema = {
|
|
7161
7209
|
connectionId: import_zod4.z.string().min(1).describe("A connectionId from list_service_connections."),
|
|
7162
7210
|
tool: import_zod4.z.string().min(1).describe("One of that connection's readTools (from list_service_connections). An unlisted tool name is rejected with the allowed list."),
|
|
@@ -8129,11 +8177,18 @@ function registerPaaExtractorMcpTools(server2, executor, options = {}) {
|
|
|
8129
8177
|
}, async (input) => formatCreditsInfo(await executor.creditsInfo(input), input));
|
|
8130
8178
|
server2.registerTool("list_service_connections", {
|
|
8131
8179
|
title: "List Connected Services",
|
|
8132
|
-
description: "List every third-party service connection this MCP Scraper account has authorized, including Resend, GitHub, Google Analytics, Google Search Console, YouTube, Facebook Pages, LinkedIn, X, Meta Marketing, Slack, Gmail, Calendar, Google Drive, Zoom, Xero, and others. Returns the tenant-scoped connectionId
|
|
8180
|
+
description: "List every third-party service connection this MCP Scraper account has authorized, including Resend, GitHub, Google Analytics, Google Search Console, YouTube, Facebook Pages, LinkedIn, X, Meta Marketing, Slack, Gmail, Calendar, Google Drive, Zoom, Xero, and others. Returns the tenant-scoped connectionId; verified providerAccountEmail/providerAccountName identity when the provider exposes it; credential transport; exact live readTools and gated actionTools; permission-aware toolCapabilities with missing OAuth-grant or provider-app-feature blockers; permanently blocked administrative tools; and schema-discovery metadata. The provider identity is distinct from the MCP Scraper login: use it to choose the intended account before any read, export, schedule binding, or gated action. 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. A scheduled Search Console connection_sync creates a typed tenant-owned performance table; after it runs, use the returned tableName with table-describe and table-query instead of repeatedly calling Google for historical filtering.",
|
|
8133
8181
|
inputSchema: ListServiceConnectionsInputSchema,
|
|
8134
8182
|
outputSchema: recordOutputSchema("list_service_connections", ListServiceConnectionsOutputSchema),
|
|
8135
8183
|
annotations: { title: "List Connected Services", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
8136
8184
|
}, async (input) => executor.listServiceConnections(input));
|
|
8185
|
+
server2.registerTool("test_service_connection", {
|
|
8186
|
+
title: "Test Connected Service",
|
|
8187
|
+
description: "Test the current provider transport for one tenant-owned connection without changing its OAuth lifecycle. Call this when a connected account appears unavailable before recommending reconnect. Reconnect is appropriate only when reconnectRequired is true.",
|
|
8188
|
+
inputSchema: TestServiceConnectionInputSchema,
|
|
8189
|
+
outputSchema: recordOutputSchema("test_service_connection", TestServiceConnectionOutputSchema),
|
|
8190
|
+
annotations: { title: "Test Connected Service", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }
|
|
8191
|
+
}, async (input) => executor.testServiceConnection(input));
|
|
8137
8192
|
server2.registerTool("slack_send_message", {
|
|
8138
8193
|
title: "Send Slack Message",
|
|
8139
8194
|
description: "Send a message to a Slack channel through a connected, action-enabled Slack connection. Requires a connectionId from list_service_connections with actionsEnabled true; the person must have explicitly turned actions on for that connection.",
|
|
@@ -8748,12 +8803,15 @@ var memoryCaptureTool_notePropsSchema = import_zod5.z.object({
|
|
|
8748
8803
|
type: import_zod5.z.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
8749
8804
|
domain: import_zod5.z.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
8750
8805
|
folder: import_zod5.z.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
8806
|
+
script_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: one or more Obsidian/internal paths under scripts/."),
|
|
8807
|
+
reference_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under references/."),
|
|
8808
|
+
template_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under templates/."),
|
|
8751
8809
|
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
8810
|
}).partial().passthrough();
|
|
8753
8811
|
var MemoryCaptureSchema = {
|
|
8754
8812
|
id: "memory-capture",
|
|
8755
8813
|
upstreamName: "memoryCaptureTool",
|
|
8756
|
-
description: "Strict normal-create path for durable memory.
|
|
8814
|
+
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
8815
|
input: {
|
|
8758
8816
|
vault: import_zod5.z.string(),
|
|
8759
8817
|
folder: import_zod5.z.string().optional(),
|
|
@@ -8811,7 +8869,7 @@ var MemoryQuestionsSchema = {
|
|
|
8811
8869
|
var PrepareMemoryWriteSchema = {
|
|
8812
8870
|
id: "prepare-memory-write",
|
|
8813
8871
|
upstreamName: "prepareMemoryWriteTool",
|
|
8814
|
-
description: "Mandatory planning pass for a normal new memory.
|
|
8872
|
+
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
8873
|
input: {
|
|
8816
8874
|
title: import_zod5.z.string().min(1),
|
|
8817
8875
|
content: import_zod5.z.string().min(1),
|
|
@@ -8847,6 +8905,9 @@ var validateMemoryWriteTool_notePropsSchema = import_zod5.z.object({
|
|
|
8847
8905
|
type: import_zod5.z.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
8848
8906
|
domain: import_zod5.z.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
8849
8907
|
folder: import_zod5.z.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
8908
|
+
script_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: one or more Obsidian/internal paths under scripts/."),
|
|
8909
|
+
reference_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under references/."),
|
|
8910
|
+
template_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under templates/."),
|
|
8850
8911
|
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
8912
|
}).partial().passthrough();
|
|
8852
8913
|
var ValidateMemoryWriteSchema = {
|
|
@@ -9302,6 +9363,39 @@ var LibraryIngestSchema = {
|
|
|
9302
9363
|
openWorldHint: true
|
|
9303
9364
|
}
|
|
9304
9365
|
};
|
|
9366
|
+
var bulkDeleteNotesTool_FilterSchema = import_zod5.z.object({
|
|
9367
|
+
column: import_zod5.z.enum(["path", "title", "kind", "source", "captured_at", "created_at", "updated_at", "revision"]).describe("Note column to filter on."),
|
|
9368
|
+
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.'),
|
|
9369
|
+
value: import_zod5.z.unknown().describe('Value to compare against. For "in", pass an array.')
|
|
9370
|
+
});
|
|
9371
|
+
var BulkDeleteNotesSchema = {
|
|
9372
|
+
id: "bulk-delete-notes",
|
|
9373
|
+
upstreamName: "bulkDeleteNotesTool",
|
|
9374
|
+
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).",
|
|
9375
|
+
input: {
|
|
9376
|
+
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."),
|
|
9377
|
+
filters: import_zod5.z.array(bulkDeleteNotesTool_FilterSchema).default([]).describe("Filters to AND together. At least one of filters/tags is required."),
|
|
9378
|
+
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."),
|
|
9379
|
+
dryRun: import_zod5.z.boolean().default(true).describe("When true (default), previews matches without deleting anything. Pass false to actually delete.")
|
|
9380
|
+
},
|
|
9381
|
+
output: {
|
|
9382
|
+
ok: import_zod5.z.boolean().describe("True on success; false on auth/scope/validation error."),
|
|
9383
|
+
vault: import_zod5.z.string().optional().describe("The vault operated on (after defaulting). Present when ok is true."),
|
|
9384
|
+
dryRun: import_zod5.z.boolean().optional().describe("Echoes whether this call was a preview or a real delete."),
|
|
9385
|
+
matchCount: import_zod5.z.number().optional().describe("Number of notes matching the filters. Present on a dry run."),
|
|
9386
|
+
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."),
|
|
9387
|
+
deleted: import_zod5.z.number().optional().describe("Number of notes actually deleted. Present when dryRun is false."),
|
|
9388
|
+
deletedPaths: import_zod5.z.array(import_zod5.z.string()).optional().describe("Paths of the deleted notes. Present when dryRun is false."),
|
|
9389
|
+
error: import_zod5.z.string().optional().describe("Human-readable failure reason when ok is false.")
|
|
9390
|
+
},
|
|
9391
|
+
annotations: {
|
|
9392
|
+
title: "Bulk Delete Notes",
|
|
9393
|
+
readOnlyHint: false,
|
|
9394
|
+
destructiveHint: true,
|
|
9395
|
+
idempotentHint: false,
|
|
9396
|
+
openWorldHint: false
|
|
9397
|
+
}
|
|
9398
|
+
};
|
|
9305
9399
|
var DeleteNoteSchema = {
|
|
9306
9400
|
id: "delete-note",
|
|
9307
9401
|
upstreamName: "deleteNoteTool",
|
|
@@ -9383,6 +9477,9 @@ var getTool_notePropsSchema = import_zod5.z.object({
|
|
|
9383
9477
|
type: import_zod5.z.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
9384
9478
|
domain: import_zod5.z.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
9385
9479
|
folder: import_zod5.z.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
9480
|
+
script_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: one or more Obsidian/internal paths under scripts/."),
|
|
9481
|
+
reference_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under references/."),
|
|
9482
|
+
template_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under templates/."),
|
|
9386
9483
|
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
9484
|
}).partial().passthrough();
|
|
9388
9485
|
var GetSchema = {
|
|
@@ -9471,6 +9568,9 @@ var putTool_notePropsSchema = import_zod5.z.object({
|
|
|
9471
9568
|
type: import_zod5.z.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
9472
9569
|
domain: import_zod5.z.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
9473
9570
|
folder: import_zod5.z.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
9571
|
+
script_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: one or more Obsidian/internal paths under scripts/."),
|
|
9572
|
+
reference_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under references/."),
|
|
9573
|
+
template_links: import_zod5.z.array(import_zod5.z.string()).describe("Skills only: optional Obsidian/internal paths under templates/."),
|
|
9474
9574
|
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
9575
|
}).partial().passthrough();
|
|
9476
9576
|
var PutSchema = {
|
|
@@ -9515,44 +9615,64 @@ var PutSchema = {
|
|
|
9515
9615
|
openWorldHint: true
|
|
9516
9616
|
}
|
|
9517
9617
|
};
|
|
9618
|
+
var searchTool_primitiveValue = import_zod5.z.union([import_zod5.z.string(), import_zod5.z.number(), import_zod5.z.boolean()]);
|
|
9518
9619
|
var SearchSchema = {
|
|
9519
9620
|
id: "memory-search",
|
|
9520
9621
|
upstreamName: "searchTool",
|
|
9521
|
-
description: "
|
|
9622
|
+
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
9623
|
input: {
|
|
9523
|
-
vault: import_zod5.z.string().optional().describe(
|
|
9524
|
-
|
|
9525
|
-
),
|
|
9526
|
-
|
|
9527
|
-
|
|
9528
|
-
),
|
|
9529
|
-
|
|
9530
|
-
|
|
9531
|
-
|
|
9624
|
+
vault: import_zod5.z.string().optional().describe("Exact logical vault handle to search. Omit to search every entitled vault."),
|
|
9625
|
+
query: import_zod5.z.string().min(1).describe("A focused semantic reformulation of the request."),
|
|
9626
|
+
userMessage: import_zod5.z.string().optional().describe("Original human wording. Used as a distinct query variant when useful and logged for quality review."),
|
|
9627
|
+
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."),
|
|
9628
|
+
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."),
|
|
9629
|
+
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."),
|
|
9630
|
+
tagMode: import_zod5.z.enum(["any", "all"]).optional().describe("Whether a note must match any or all supplied tags. Default any."),
|
|
9631
|
+
kind: import_zod5.z.enum(["note", "library", "capture", "decision", "message"]).optional().describe("Exact persisted note-kind filter."),
|
|
9632
|
+
type: import_zod5.z.string().min(1).optional().describe("Exact props.type filter."),
|
|
9633
|
+
dateFrom: import_zod5.z.string().datetime().optional().describe("Inclusive lower bound for note updatedAt."),
|
|
9634
|
+
dateTo: import_zod5.z.string().datetime().optional().describe("Inclusive upper bound for note updatedAt."),
|
|
9635
|
+
metadata: import_zod5.z.record(searchTool_primitiveValue).optional().describe("Exact equality filters for primitive note props."),
|
|
9636
|
+
queryVariantCount: import_zod5.z.number().int().min(2).max(4).optional().describe("Number of variants. Default 3."),
|
|
9637
|
+
candidatePool: import_zod5.z.number().int().min(10).max(100).optional().describe("Total fused candidates before final reranking. Default 50."),
|
|
9638
|
+
graphSeedCount: import_zod5.z.number().int().min(0).max(20).optional().describe("Strong preliminary notes whose graph neighborhoods are considered. Default 8."),
|
|
9639
|
+
graphDepth: import_zod5.z.literal(1).optional().describe("Graph expansion depth. Bounded to exactly one hop."),
|
|
9640
|
+
graphNeighborsPerSeed: import_zod5.z.number().int().min(1).max(10).optional().describe("Maximum outgoing-link plus backlink neighbors per seed. Default 5."),
|
|
9641
|
+
rerankTopN: import_zod5.z.number().int().min(1).max(50).optional().describe("Final results retained after Jina reranking. Default 30."),
|
|
9642
|
+
topK: import_zod5.z.number().int().min(1).max(50).optional().describe("Deprecated compatibility alias for rerankTopN. Prefer rerankTopN; default remains 30."),
|
|
9643
|
+
includeShared: import_zod5.z.boolean().optional().describe("Also search individually accepted shares. Default true. Exact note metadata filters exclude shares without accessible metadata.")
|
|
9532
9644
|
},
|
|
9533
9645
|
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
|
-
|
|
9646
|
+
ok: import_zod5.z.boolean(),
|
|
9647
|
+
vault: import_zod5.z.string().optional(),
|
|
9648
|
+
vaultsSearched: import_zod5.z.array(import_zod5.z.string()).optional(),
|
|
9649
|
+
planner: import_zod5.z.object({
|
|
9650
|
+
queryVariants: import_zod5.z.array(import_zod5.z.string()),
|
|
9651
|
+
candidatePool: import_zod5.z.number(),
|
|
9652
|
+
graphSeedCount: import_zod5.z.number(),
|
|
9653
|
+
graphDepth: import_zod5.z.number(),
|
|
9654
|
+
graphNeighborsPerSeed: import_zod5.z.number(),
|
|
9655
|
+
rerankTopN: import_zod5.z.number(),
|
|
9656
|
+
seeds: import_zod5.z.array(import_zod5.z.string()),
|
|
9657
|
+
graphCandidatesAdded: import_zod5.z.number()
|
|
9658
|
+
}).optional(),
|
|
9659
|
+
rerank: import_zod5.z.object({ applied: import_zod5.z.boolean(), provider: import_zod5.z.string(), fallbackReason: import_zod5.z.string().optional() }).optional(),
|
|
9660
|
+
results: import_zod5.z.array(import_zod5.z.object({
|
|
9661
|
+
text: import_zod5.z.string(),
|
|
9662
|
+
source: import_zod5.z.string(),
|
|
9663
|
+
score: import_zod5.z.number(),
|
|
9664
|
+
originalScore: import_zod5.z.number(),
|
|
9665
|
+
rerankScore: import_zod5.z.number().optional(),
|
|
9666
|
+
vault: import_zod5.z.string().optional(),
|
|
9667
|
+
sharedBy: import_zod5.z.string().optional(),
|
|
9668
|
+
shareId: import_zod5.z.string().optional(),
|
|
9669
|
+
matchChannels: import_zod5.z.array(import_zod5.z.enum(["semantic", "tag", "metadata", "graph"])),
|
|
9670
|
+
matchedQueries: import_zod5.z.array(import_zod5.z.string()),
|
|
9671
|
+
graphFrom: import_zod5.z.array(import_zod5.z.string())
|
|
9672
|
+
})).optional(),
|
|
9673
|
+
error: import_zod5.z.string().optional()
|
|
9548
9674
|
},
|
|
9549
|
-
annotations: {
|
|
9550
|
-
title: "Semantic Memory Search",
|
|
9551
|
-
readOnlyHint: true,
|
|
9552
|
-
destructiveHint: false,
|
|
9553
|
-
idempotentHint: true,
|
|
9554
|
-
openWorldHint: true
|
|
9555
|
-
}
|
|
9675
|
+
annotations: { title: "Hybrid Smart RAG Memory Search", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }
|
|
9556
9676
|
};
|
|
9557
9677
|
var SuggestSchema = {
|
|
9558
9678
|
id: "memory-suggest",
|
|
@@ -9656,14 +9776,14 @@ var TemporalRecallSchema = {
|
|
|
9656
9776
|
var CreateScheduledActionSchema = {
|
|
9657
9777
|
id: "create-scheduled-action",
|
|
9658
9778
|
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.",
|
|
9779
|
+
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
9780
|
input: {
|
|
9661
9781
|
description: import_zod5.z.string().min(1).describe("Free-text description of what this action should do each time it runs."),
|
|
9662
9782
|
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
9783
|
cadence: import_zod5.z.enum(["once", "daily", "weekly", "monthly"]).describe('How often this action runs. "once" fires a single time and then completes.'),
|
|
9664
9784
|
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
9785
|
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(
|
|
9786
|
+
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
9787
|
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
9788
|
},
|
|
9669
9789
|
output: {
|
|
@@ -9725,7 +9845,7 @@ var GetScheduleLinkSchema = {
|
|
|
9725
9845
|
var GetScheduleStatusSchema = {
|
|
9726
9846
|
id: "get-schedule-status",
|
|
9727
9847
|
upstreamName: "getScheduleStatusTool",
|
|
9728
|
-
description: "Get the Credit-metered Scheduled Actions access and
|
|
9848
|
+
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
9849
|
input: {},
|
|
9730
9850
|
output: {
|
|
9731
9851
|
ok: import_zod5.z.boolean(),
|
|
@@ -9801,7 +9921,7 @@ var PauseScheduledActionSchema = {
|
|
|
9801
9921
|
var ProposeScheduledActionSchema = {
|
|
9802
9922
|
id: "propose-scheduled-action",
|
|
9803
9923
|
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.",
|
|
9924
|
+
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
9925
|
input: {
|
|
9806
9926
|
request: import_zod5.z.string().min(1).describe("Freeform text describing what you want scheduled.")
|
|
9807
9927
|
},
|
|
@@ -9810,6 +9930,8 @@ var ProposeScheduledActionSchema = {
|
|
|
9810
9930
|
description: import_zod5.z.string().optional().describe("Proposed description \u2014 edit freely before confirming."),
|
|
9811
9931
|
vault: import_zod5.z.string().optional().describe("Proposed target vault."),
|
|
9812
9932
|
cadence: import_zod5.z.string().optional().describe("Proposed cadence: once, daily, weekly, or monthly."),
|
|
9933
|
+
timeOfDay: import_zod5.z.string().optional().describe("Proposed 24-hour HH:MM run time, when the request named one."),
|
|
9934
|
+
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
9935
|
rationale: import_zod5.z.string().optional().describe("Why these choices were made \u2014 read this before confirming."),
|
|
9814
9936
|
error: import_zod5.z.string().optional()
|
|
9815
9937
|
},
|
|
@@ -9824,7 +9946,7 @@ var ProposeScheduledActionSchema = {
|
|
|
9824
9946
|
var ResumeScheduledActionSchema = {
|
|
9825
9947
|
id: "resume-scheduled-action",
|
|
9826
9948
|
upstreamName: "resumeScheduledActionTool",
|
|
9827
|
-
description: "Resume a paused scheduled action. Its next run is computed fresh from now, not backfilled for time spent paused.",
|
|
9949
|
+
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
9950
|
input: {
|
|
9829
9951
|
id: import_zod5.z.string().min(1).describe("The scheduled action id.")
|
|
9830
9952
|
},
|
|
@@ -9860,14 +9982,34 @@ var RevokeScheduleLinkSchema = {
|
|
|
9860
9982
|
openWorldHint: false
|
|
9861
9983
|
}
|
|
9862
9984
|
};
|
|
9985
|
+
var SetScheduleDefaultsSchema = {
|
|
9986
|
+
id: "set-schedule-defaults",
|
|
9987
|
+
upstreamName: "setScheduleDefaultsTool",
|
|
9988
|
+
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.",
|
|
9989
|
+
input: {
|
|
9990
|
+
defaultTimezone: import_zod5.z.string().nullable().describe('IANA timezone name, e.g. "America/Denver". null clears the default (new schedules fall back to UTC).')
|
|
9991
|
+
},
|
|
9992
|
+
output: {
|
|
9993
|
+
ok: import_zod5.z.boolean(),
|
|
9994
|
+
defaultTimezone: import_zod5.z.string().nullable().optional().describe("The default timezone now in effect; null means UTC."),
|
|
9995
|
+
error: import_zod5.z.string().optional()
|
|
9996
|
+
},
|
|
9997
|
+
annotations: {
|
|
9998
|
+
title: "Set Schedule Defaults",
|
|
9999
|
+
readOnlyHint: false,
|
|
10000
|
+
destructiveHint: false,
|
|
10001
|
+
idempotentHint: true,
|
|
10002
|
+
openWorldHint: false
|
|
10003
|
+
}
|
|
10004
|
+
};
|
|
9863
10005
|
var SetScheduleEntitlementSchema = {
|
|
9864
10006
|
id: "set-schedule-entitlement",
|
|
9865
10007
|
upstreamName: "setScheduleEntitlementTool",
|
|
9866
|
-
description: "Admin-only scheduled-action credential provisioning and historical-row recovery.
|
|
10008
|
+
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
10009
|
input: {
|
|
9868
10010
|
granteeIdentity: import_zod5.z.string().min(1).describe("Identity whose scheduling entitlement is being set (e.g. an email)."),
|
|
9869
10011
|
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
|
|
10012
|
+
quotaPerPeriod: import_zod5.z.number().optional().describe("Historical monthly quota for migration/recovery only. Omit to preserve the stored value."),
|
|
9871
10013
|
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
10014
|
},
|
|
9873
10015
|
output: {
|
|
@@ -10112,9 +10254,9 @@ var QueryTableSchema = {
|
|
|
10112
10254
|
var ListTagsSchema = {
|
|
10113
10255
|
id: "list-memory-tags",
|
|
10114
10256
|
upstreamName: "listTagsTool",
|
|
10115
|
-
description: "List the live canonical tag vocabulary, aliases, usage counts, and per-vault distribution.
|
|
10257
|
+
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
10258
|
input: {
|
|
10117
|
-
includeDeprecated: import_zod5.z.boolean().optional()
|
|
10259
|
+
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
10260
|
},
|
|
10119
10261
|
output: {
|
|
10120
10262
|
ok: import_zod5.z.boolean(),
|
|
@@ -10126,7 +10268,7 @@ var ListTagsSchema = {
|
|
|
10126
10268
|
var ResolveTagsSchema = {
|
|
10127
10269
|
id: "resolve-memory-tags",
|
|
10128
10270
|
upstreamName: "resolveTagsTool",
|
|
10129
|
-
description: "Resolve proposed concepts against the live tag vocabulary. Returns reuse, create, or omit
|
|
10271
|
+
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
10272
|
input: {
|
|
10131
10273
|
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
10274
|
},
|
|
@@ -10140,7 +10282,7 @@ var ResolveTagsSchema = {
|
|
|
10140
10282
|
var UpsertTagSchema = {
|
|
10141
10283
|
id: "upsert-memory-tag",
|
|
10142
10284
|
upstreamName: "upsertTagTool",
|
|
10143
|
-
description: "Define or curate one canonical tag, its meaning, aliases, and lifecycle.
|
|
10285
|
+
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
10286
|
input: {
|
|
10145
10287
|
tag: import_zod5.z.string().min(1),
|
|
10146
10288
|
description: import_zod5.z.string().optional(),
|
|
@@ -10296,17 +10438,17 @@ var ListVaultsSchema = {
|
|
|
10296
10438
|
var ProvisionDefaultsSchema = {
|
|
10297
10439
|
id: "provision-defaults",
|
|
10298
10440
|
upstreamName: "provisionDefaultsTool",
|
|
10299
|
-
description: "Provision the standard
|
|
10441
|
+
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
10442
|
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
|
|
10443
|
+
granteeIdentity: import_zod5.z.string().min(1).describe("Identity that should OWN the 14 default vaults (e.g. an email or user id)."),
|
|
10444
|
+
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
10445
|
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
10446
|
},
|
|
10305
10447
|
output: {
|
|
10306
10448
|
ok: import_zod5.z.boolean().describe("True when provisioning succeeded; false on auth/scope error."),
|
|
10307
10449
|
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
|
|
10450
|
+
created: import_zod5.z.array(import_zod5.z.string()).optional().describe("Vault names newly created on this call (empty when all 14 already existed)."),
|
|
10451
|
+
vaults: import_zod5.z.array(import_zod5.z.string()).optional().describe("All 14 default vault names the identity now owns."),
|
|
10310
10452
|
keyId: import_zod5.z.string().optional().describe("Stable id of the issued key. Present only when issueKey was true."),
|
|
10311
10453
|
secret: import_zod5.z.string().optional().describe("The issued key secret \u2014 RETURNED ONCE. Present only when issueKey was true."),
|
|
10312
10454
|
plan: import_zod5.z.string().optional().describe("Plan assigned to the issued key. Present only when issueKey was true."),
|
|
@@ -10343,9 +10485,9 @@ var RouteMemorySchema = {
|
|
|
10343
10485
|
var VideoAnalyzeStartSchema = {
|
|
10344
10486
|
id: "video-analyze-start",
|
|
10345
10487
|
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.
|
|
10488
|
+
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
10489
|
input: {
|
|
10348
|
-
sourceUrl: import_zod5.z.string().url().describe("
|
|
10490
|
+
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
10491
|
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
10492
|
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
10493
|
detail: import_zod5.z.enum(["fast", "standard", "deep"]).optional().describe("Analysis depth. Default standard."),
|
|
@@ -10482,6 +10624,7 @@ var MEMORY_TOOL_SCHEMAS = [
|
|
|
10482
10624
|
GraphPathSchema,
|
|
10483
10625
|
GraphUniverseSchema,
|
|
10484
10626
|
LibraryIngestSchema,
|
|
10627
|
+
BulkDeleteNotesSchema,
|
|
10485
10628
|
DeleteNoteSchema,
|
|
10486
10629
|
ExportSchema,
|
|
10487
10630
|
GetSchema,
|
|
@@ -10500,6 +10643,7 @@ var MEMORY_TOOL_SCHEMAS = [
|
|
|
10500
10643
|
ProposeScheduledActionSchema,
|
|
10501
10644
|
ResumeScheduledActionSchema,
|
|
10502
10645
|
RevokeScheduleLinkSchema,
|
|
10646
|
+
SetScheduleDefaultsSchema,
|
|
10503
10647
|
SetScheduleEntitlementSchema,
|
|
10504
10648
|
CostUsageSchema,
|
|
10505
10649
|
StorageUsageSchema,
|
|
@@ -10634,7 +10778,7 @@ function renderInstallTerminal(options) {
|
|
|
10634
10778
|
"1/1 install surfaces ready",
|
|
10635
10779
|
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),
|
|
10636
10780
|
"",
|
|
10637
|
-
`${colorize("Tools", "cyan", color)} ${colorize("(
|
|
10781
|
+
`${colorize("Tools", "cyan", color)} ${colorize("(163 MCP tools)", "muted", color)}`,
|
|
10638
10782
|
toolRow("search", ["harvest_paa", "search_serp", "maps_search", "maps_place_intel"], color),
|
|
10639
10783
|
toolRow("extract", ["extract_url", "map_site_urls", "extract_site", "audit_site", "directory_workflow"], color),
|
|
10640
10784
|
toolRow("build", ["rank_tracker_workflow", "cron plan", "database prompt"], color),
|