mcp-scraper 0.24.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 +2 -2
- 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-SUPUHPJS.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-I5U3OUZZ.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-CDLHUCMT.js +0 -7
- package/dist/chunk-CDLHUCMT.js.map +0 -1
- package/dist/chunk-SUPUHPJS.js.map +0 -1
- /package/dist/{server-I5U3OUZZ.js.map → server-PILR3U5E.js.map} +0 -0
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
registerMemoryMcpTools,
|
|
8
8
|
registerPaaExtractorMcpTools,
|
|
9
9
|
registerSerpIntelligenceCaptureTools
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-NC37L5RW.js";
|
|
11
11
|
import "../chunk-R7EETU7Z.js";
|
|
12
12
|
import "../chunk-MTSBI7ZH.js";
|
|
13
13
|
import {
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
import "../chunk-XGIPATLV.js";
|
|
17
17
|
import {
|
|
18
18
|
PACKAGE_VERSION
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-UELJZCUC.js";
|
|
20
20
|
import "../chunk-JHI373VB.js";
|
|
21
21
|
import "../chunk-M2S27J6Z.js";
|
|
22
22
|
import "../chunk-ICT7DDHL.js";
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from "./chunk-XGIPATLV.js";
|
|
20
20
|
import {
|
|
21
21
|
PACKAGE_VERSION
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-UELJZCUC.js";
|
|
23
23
|
import {
|
|
24
24
|
MC_PER_CREDIT
|
|
25
25
|
} from "./chunk-JHI373VB.js";
|
|
@@ -394,7 +394,7 @@ Multi-step orchestrations \u2014 prefer these over hand-chaining primitives when
|
|
|
394
394
|
|
|
395
395
|
## Memory
|
|
396
396
|
mcp-scraper also exposes persistent per-user memory tools (notes, facts, vaults,
|
|
397
|
-
scheduled actions, tables, channels) backed by memory.mcpscraper.dev. Every account starts with
|
|
397
|
+
scheduled actions, tables, channels) backed by memory.mcpscraper.dev. Every account starts with 14
|
|
398
398
|
vaults \u2014 call **list-vaults** to see what exists before creating anything new. Pick the vault whose job
|
|
399
399
|
matches the content: **Ideas** (unvalidated concepts), **Knowledge** (distilled lessons/how-tos),
|
|
400
400
|
**Library** (raw source material \u2014 articles, transcripts), **People** (one durable note per person/org),
|
|
@@ -402,7 +402,8 @@ matches the content: **Ideas** (unvalidated concepts), **Knowledge** (distilled
|
|
|
402
402
|
(action items with a status), **Projects** (durable named initiatives), **Issues** (something broken),
|
|
403
403
|
**Improvement Log** (receipts of changes made and whether they worked), **Experiments** (hypothesis +
|
|
404
404
|
measured result), **Sprint** (current cycle's scope), **Inspiration** (other people's work worth
|
|
405
|
-
studying)
|
|
405
|
+
studying), **Skills** (reusable skill packages; each requires \`scripts/\` and at least one of
|
|
406
|
+
\`references/\` or \`templates/\`, and may use both).
|
|
406
407
|
For a normal new narrative note, call **prepare-memory-write** first. It queries the live vault contract,
|
|
407
408
|
tag vocabulary, and natural neighbor vaults, and returns interlink candidates that must be read before
|
|
408
409
|
acceptance. Compose every returned template section, then call **memory-capture**, which validates the
|
|
@@ -432,6 +433,12 @@ Tags are live vocabulary, not improvised labels: **list-memory-tags** shows what
|
|
|
432
433
|
reusable, and has no exact, alias, or near-equivalent. Use **memory-backlinks**,
|
|
433
434
|
**memory-graph-universe**, and **memory-graph-path** to trace the linked universe across vaults.
|
|
434
435
|
|
|
436
|
+
**Always inspect the complete tag inventory and related notes first.** Use hybrid Smart RAG by default:
|
|
437
|
+
form 3 focused queries (2\u20134 when useful), fuse exact tag/metadata/vault/date and semantic matches into 50
|
|
438
|
+
candidates, expand the top 8 seeds by one link/backlink hop with at most 5 neighbors each, then Jina-rerank
|
|
439
|
+
the combined pool to the best 30. Graph neighbors are candidates, never automatic links; add only links
|
|
440
|
+
supported by the note contents.
|
|
441
|
+
|
|
435
442
|
Scrape deposits are raw evidence and therefore go to **Library** through **library-ingest**, with the full
|
|
436
443
|
Library template and source metadata. If the source contains durable applicable guidance, create a separate
|
|
437
444
|
Knowledge companion through prepare-memory-write + memory-capture and link it to the Library source with
|
|
@@ -8059,12 +8066,15 @@ var memoryCaptureTool_notePropsSchema = z3.object({
|
|
|
8059
8066
|
type: z3.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
8060
8067
|
domain: z3.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
8061
8068
|
folder: z3.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
8069
|
+
script_links: z3.array(z3.string()).describe("Skills only: one or more Obsidian/internal paths under scripts/."),
|
|
8070
|
+
reference_links: z3.array(z3.string()).describe("Skills only: optional Obsidian/internal paths under references/."),
|
|
8071
|
+
template_links: z3.array(z3.string()).describe("Skills only: optional Obsidian/internal paths under templates/."),
|
|
8062
8072
|
parentMessageId: z3.string().describe("Channel messages only: the path of the top-level message this is a reply to. Absent on top-level messages.")
|
|
8063
8073
|
}).partial().passthrough();
|
|
8064
8074
|
var MemoryCaptureSchema = {
|
|
8065
8075
|
id: "memory-capture",
|
|
8066
8076
|
upstreamName: "memoryCaptureTool",
|
|
8067
|
-
description: "Strict normal-create path for durable memory.
|
|
8077
|
+
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.",
|
|
8068
8078
|
input: {
|
|
8069
8079
|
vault: z3.string(),
|
|
8070
8080
|
folder: z3.string().optional(),
|
|
@@ -8122,7 +8132,7 @@ var MemoryQuestionsSchema = {
|
|
|
8122
8132
|
var PrepareMemoryWriteSchema = {
|
|
8123
8133
|
id: "prepare-memory-write",
|
|
8124
8134
|
upstreamName: "prepareMemoryWriteTool",
|
|
8125
|
-
description: "Mandatory planning pass for a normal new memory.
|
|
8135
|
+
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.",
|
|
8126
8136
|
input: {
|
|
8127
8137
|
title: z3.string().min(1),
|
|
8128
8138
|
content: z3.string().min(1),
|
|
@@ -8158,6 +8168,9 @@ var validateMemoryWriteTool_notePropsSchema = z3.object({
|
|
|
8158
8168
|
type: z3.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
8159
8169
|
domain: z3.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
8160
8170
|
folder: z3.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
8171
|
+
script_links: z3.array(z3.string()).describe("Skills only: one or more Obsidian/internal paths under scripts/."),
|
|
8172
|
+
reference_links: z3.array(z3.string()).describe("Skills only: optional Obsidian/internal paths under references/."),
|
|
8173
|
+
template_links: z3.array(z3.string()).describe("Skills only: optional Obsidian/internal paths under templates/."),
|
|
8161
8174
|
parentMessageId: z3.string().describe("Channel messages only: the path of the top-level message this is a reply to. Absent on top-level messages.")
|
|
8162
8175
|
}).partial().passthrough();
|
|
8163
8176
|
var ValidateMemoryWriteSchema = {
|
|
@@ -8613,6 +8626,39 @@ var LibraryIngestSchema = {
|
|
|
8613
8626
|
openWorldHint: true
|
|
8614
8627
|
}
|
|
8615
8628
|
};
|
|
8629
|
+
var bulkDeleteNotesTool_FilterSchema = z3.object({
|
|
8630
|
+
column: z3.enum(["path", "title", "kind", "source", "captured_at", "created_at", "updated_at", "revision"]).describe("Note column to filter on."),
|
|
8631
|
+
op: z3.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.'),
|
|
8632
|
+
value: z3.unknown().describe('Value to compare against. For "in", pass an array.')
|
|
8633
|
+
});
|
|
8634
|
+
var BulkDeleteNotesSchema = {
|
|
8635
|
+
id: "bulk-delete-notes",
|
|
8636
|
+
upstreamName: "bulkDeleteNotesTool",
|
|
8637
|
+
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).",
|
|
8638
|
+
input: {
|
|
8639
|
+
vault: z3.string().optional().describe("Vault to delete from. Optional; defaults to the session active vault, then the first vault the caller is entitled to."),
|
|
8640
|
+
filters: z3.array(bulkDeleteNotesTool_FilterSchema).default([]).describe("Filters to AND together. At least one of filters/tags is required."),
|
|
8641
|
+
tags: z3.array(z3.string()).optional().describe("Match notes carrying ANY of these tags (ORed among themselves, ANDed with filters). At least one of filters/tags is required."),
|
|
8642
|
+
dryRun: z3.boolean().default(true).describe("When true (default), previews matches without deleting anything. Pass false to actually delete.")
|
|
8643
|
+
},
|
|
8644
|
+
output: {
|
|
8645
|
+
ok: z3.boolean().describe("True on success; false on auth/scope/validation error."),
|
|
8646
|
+
vault: z3.string().optional().describe("The vault operated on (after defaulting). Present when ok is true."),
|
|
8647
|
+
dryRun: z3.boolean().optional().describe("Echoes whether this call was a preview or a real delete."),
|
|
8648
|
+
matchCount: z3.number().optional().describe("Number of notes matching the filters. Present on a dry run."),
|
|
8649
|
+
sample: z3.array(z3.object({ path: z3.string(), title: z3.string(), updatedAt: z3.string() })).optional().describe("Up to 20 matching notes, most-recently-updated first. Present on a dry run."),
|
|
8650
|
+
deleted: z3.number().optional().describe("Number of notes actually deleted. Present when dryRun is false."),
|
|
8651
|
+
deletedPaths: z3.array(z3.string()).optional().describe("Paths of the deleted notes. Present when dryRun is false."),
|
|
8652
|
+
error: z3.string().optional().describe("Human-readable failure reason when ok is false.")
|
|
8653
|
+
},
|
|
8654
|
+
annotations: {
|
|
8655
|
+
title: "Bulk Delete Notes",
|
|
8656
|
+
readOnlyHint: false,
|
|
8657
|
+
destructiveHint: true,
|
|
8658
|
+
idempotentHint: false,
|
|
8659
|
+
openWorldHint: false
|
|
8660
|
+
}
|
|
8661
|
+
};
|
|
8616
8662
|
var DeleteNoteSchema = {
|
|
8617
8663
|
id: "delete-note",
|
|
8618
8664
|
upstreamName: "deleteNoteTool",
|
|
@@ -8694,6 +8740,9 @@ var getTool_notePropsSchema = z3.object({
|
|
|
8694
8740
|
type: z3.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
8695
8741
|
domain: z3.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
8696
8742
|
folder: z3.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
8743
|
+
script_links: z3.array(z3.string()).describe("Skills only: one or more Obsidian/internal paths under scripts/."),
|
|
8744
|
+
reference_links: z3.array(z3.string()).describe("Skills only: optional Obsidian/internal paths under references/."),
|
|
8745
|
+
template_links: z3.array(z3.string()).describe("Skills only: optional Obsidian/internal paths under templates/."),
|
|
8697
8746
|
parentMessageId: z3.string().describe("Channel messages only: the path of the top-level message this is a reply to. Absent on top-level messages.")
|
|
8698
8747
|
}).partial().passthrough();
|
|
8699
8748
|
var GetSchema = {
|
|
@@ -8782,6 +8831,9 @@ var putTool_notePropsSchema = z3.object({
|
|
|
8782
8831
|
type: z3.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
8783
8832
|
domain: z3.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
8784
8833
|
folder: z3.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
8834
|
+
script_links: z3.array(z3.string()).describe("Skills only: one or more Obsidian/internal paths under scripts/."),
|
|
8835
|
+
reference_links: z3.array(z3.string()).describe("Skills only: optional Obsidian/internal paths under references/."),
|
|
8836
|
+
template_links: z3.array(z3.string()).describe("Skills only: optional Obsidian/internal paths under templates/."),
|
|
8785
8837
|
parentMessageId: z3.string().describe("Channel messages only: the path of the top-level message this is a reply to. Absent on top-level messages.")
|
|
8786
8838
|
}).partial().passthrough();
|
|
8787
8839
|
var PutSchema = {
|
|
@@ -8826,44 +8878,64 @@ var PutSchema = {
|
|
|
8826
8878
|
openWorldHint: true
|
|
8827
8879
|
}
|
|
8828
8880
|
};
|
|
8881
|
+
var searchTool_primitiveValue = z3.union([z3.string(), z3.number(), z3.boolean()]);
|
|
8829
8882
|
var SearchSchema = {
|
|
8830
8883
|
id: "memory-search",
|
|
8831
8884
|
upstreamName: "searchTool",
|
|
8832
|
-
description: "
|
|
8885
|
+
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.",
|
|
8833
8886
|
input: {
|
|
8834
|
-
vault: z3.string().optional().describe(
|
|
8835
|
-
|
|
8836
|
-
),
|
|
8837
|
-
|
|
8838
|
-
|
|
8839
|
-
),
|
|
8840
|
-
|
|
8841
|
-
|
|
8842
|
-
|
|
8887
|
+
vault: z3.string().optional().describe("Exact logical vault handle to search. Omit to search every entitled vault."),
|
|
8888
|
+
query: z3.string().min(1).describe("A focused semantic reformulation of the request."),
|
|
8889
|
+
userMessage: z3.string().optional().describe("Original human wording. Used as a distinct query variant when useful and logged for quality review."),
|
|
8890
|
+
queries: z3.array(z3.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."),
|
|
8891
|
+
entities: z3.array(z3.string().min(1)).max(20).optional().describe("Named entities or exact terms used to form a focused query variant."),
|
|
8892
|
+
tags: z3.array(z3.string().min(1)).max(20).optional().describe("Exact canonical tags used for tag-channel retrieval and filtering."),
|
|
8893
|
+
tagMode: z3.enum(["any", "all"]).optional().describe("Whether a note must match any or all supplied tags. Default any."),
|
|
8894
|
+
kind: z3.enum(["note", "library", "capture", "decision", "message"]).optional().describe("Exact persisted note-kind filter."),
|
|
8895
|
+
type: z3.string().min(1).optional().describe("Exact props.type filter."),
|
|
8896
|
+
dateFrom: z3.string().datetime().optional().describe("Inclusive lower bound for note updatedAt."),
|
|
8897
|
+
dateTo: z3.string().datetime().optional().describe("Inclusive upper bound for note updatedAt."),
|
|
8898
|
+
metadata: z3.record(searchTool_primitiveValue).optional().describe("Exact equality filters for primitive note props."),
|
|
8899
|
+
queryVariantCount: z3.number().int().min(2).max(4).optional().describe("Number of variants. Default 3."),
|
|
8900
|
+
candidatePool: z3.number().int().min(10).max(100).optional().describe("Total fused candidates before final reranking. Default 50."),
|
|
8901
|
+
graphSeedCount: z3.number().int().min(0).max(20).optional().describe("Strong preliminary notes whose graph neighborhoods are considered. Default 8."),
|
|
8902
|
+
graphDepth: z3.literal(1).optional().describe("Graph expansion depth. Bounded to exactly one hop."),
|
|
8903
|
+
graphNeighborsPerSeed: z3.number().int().min(1).max(10).optional().describe("Maximum outgoing-link plus backlink neighbors per seed. Default 5."),
|
|
8904
|
+
rerankTopN: z3.number().int().min(1).max(50).optional().describe("Final results retained after Jina reranking. Default 30."),
|
|
8905
|
+
topK: z3.number().int().min(1).max(50).optional().describe("Deprecated compatibility alias for rerankTopN. Prefer rerankTopN; default remains 30."),
|
|
8906
|
+
includeShared: z3.boolean().optional().describe("Also search individually accepted shares. Default true. Exact note metadata filters exclude shares without accessible metadata.")
|
|
8843
8907
|
},
|
|
8844
8908
|
output: {
|
|
8845
|
-
ok: z3.boolean()
|
|
8846
|
-
vault: z3.string().optional()
|
|
8847
|
-
vaultsSearched: z3.array(z3.string()).optional()
|
|
8848
|
-
|
|
8849
|
-
z3.
|
|
8850
|
-
|
|
8851
|
-
|
|
8852
|
-
|
|
8853
|
-
|
|
8854
|
-
|
|
8855
|
-
|
|
8856
|
-
|
|
8857
|
-
).optional()
|
|
8858
|
-
|
|
8909
|
+
ok: z3.boolean(),
|
|
8910
|
+
vault: z3.string().optional(),
|
|
8911
|
+
vaultsSearched: z3.array(z3.string()).optional(),
|
|
8912
|
+
planner: z3.object({
|
|
8913
|
+
queryVariants: z3.array(z3.string()),
|
|
8914
|
+
candidatePool: z3.number(),
|
|
8915
|
+
graphSeedCount: z3.number(),
|
|
8916
|
+
graphDepth: z3.number(),
|
|
8917
|
+
graphNeighborsPerSeed: z3.number(),
|
|
8918
|
+
rerankTopN: z3.number(),
|
|
8919
|
+
seeds: z3.array(z3.string()),
|
|
8920
|
+
graphCandidatesAdded: z3.number()
|
|
8921
|
+
}).optional(),
|
|
8922
|
+
rerank: z3.object({ applied: z3.boolean(), provider: z3.string(), fallbackReason: z3.string().optional() }).optional(),
|
|
8923
|
+
results: z3.array(z3.object({
|
|
8924
|
+
text: z3.string(),
|
|
8925
|
+
source: z3.string(),
|
|
8926
|
+
score: z3.number(),
|
|
8927
|
+
originalScore: z3.number(),
|
|
8928
|
+
rerankScore: z3.number().optional(),
|
|
8929
|
+
vault: z3.string().optional(),
|
|
8930
|
+
sharedBy: z3.string().optional(),
|
|
8931
|
+
shareId: z3.string().optional(),
|
|
8932
|
+
matchChannels: z3.array(z3.enum(["semantic", "tag", "metadata", "graph"])),
|
|
8933
|
+
matchedQueries: z3.array(z3.string()),
|
|
8934
|
+
graphFrom: z3.array(z3.string())
|
|
8935
|
+
})).optional(),
|
|
8936
|
+
error: z3.string().optional()
|
|
8859
8937
|
},
|
|
8860
|
-
annotations: {
|
|
8861
|
-
title: "Semantic Memory Search",
|
|
8862
|
-
readOnlyHint: true,
|
|
8863
|
-
destructiveHint: false,
|
|
8864
|
-
idempotentHint: true,
|
|
8865
|
-
openWorldHint: true
|
|
8866
|
-
}
|
|
8938
|
+
annotations: { title: "Hybrid Smart RAG Memory Search", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }
|
|
8867
8939
|
};
|
|
8868
8940
|
var SuggestSchema = {
|
|
8869
8941
|
id: "memory-suggest",
|
|
@@ -8967,14 +9039,14 @@ var TemporalRecallSchema = {
|
|
|
8967
9039
|
var CreateScheduledActionSchema = {
|
|
8968
9040
|
id: "create-scheduled-action",
|
|
8969
9041
|
upstreamName: "createScheduledActionTool",
|
|
8970
|
-
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.",
|
|
9042
|
+
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.",
|
|
8971
9043
|
input: {
|
|
8972
9044
|
description: z3.string().min(1).describe("Free-text description of what this action should do each time it runs."),
|
|
8973
9045
|
vault: z3.string().min(1).describe("The vault this action writes its results into. You must already have write access to it."),
|
|
8974
9046
|
cadence: z3.enum(["once", "daily", "weekly", "monthly"]).describe('How often this action runs. "once" fires a single time and then completes.'),
|
|
8975
9047
|
executionMode: z3.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.`),
|
|
8976
9048
|
timeOfDay: z3.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)."),
|
|
8977
|
-
timezone: z3.string().optional().describe(
|
|
9049
|
+
timezone: z3.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.`),
|
|
8978
9050
|
deployDate: z3.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.')
|
|
8979
9051
|
},
|
|
8980
9052
|
output: {
|
|
@@ -9036,7 +9108,7 @@ var GetScheduleLinkSchema = {
|
|
|
9036
9108
|
var GetScheduleStatusSchema = {
|
|
9037
9109
|
id: "get-schedule-status",
|
|
9038
9110
|
upstreamName: "getScheduleStatusTool",
|
|
9039
|
-
description: "Get the Credit-metered Scheduled Actions access and
|
|
9111
|
+
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.",
|
|
9040
9112
|
input: {},
|
|
9041
9113
|
output: {
|
|
9042
9114
|
ok: z3.boolean(),
|
|
@@ -9112,7 +9184,7 @@ var PauseScheduledActionSchema = {
|
|
|
9112
9184
|
var ProposeScheduledActionSchema = {
|
|
9113
9185
|
id: "propose-scheduled-action",
|
|
9114
9186
|
upstreamName: "proposeScheduledActionTool",
|
|
9115
|
-
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.",
|
|
9187
|
+
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.",
|
|
9116
9188
|
input: {
|
|
9117
9189
|
request: z3.string().min(1).describe("Freeform text describing what you want scheduled.")
|
|
9118
9190
|
},
|
|
@@ -9121,6 +9193,8 @@ var ProposeScheduledActionSchema = {
|
|
|
9121
9193
|
description: z3.string().optional().describe("Proposed description \u2014 edit freely before confirming."),
|
|
9122
9194
|
vault: z3.string().optional().describe("Proposed target vault."),
|
|
9123
9195
|
cadence: z3.string().optional().describe("Proposed cadence: once, daily, weekly, or monthly."),
|
|
9196
|
+
timeOfDay: z3.string().optional().describe("Proposed 24-hour HH:MM run time, when the request named one."),
|
|
9197
|
+
timezone: z3.string().optional().describe("Proposed IANA timezone \u2014 from the request, or the account default when the request named a time without a zone."),
|
|
9124
9198
|
rationale: z3.string().optional().describe("Why these choices were made \u2014 read this before confirming."),
|
|
9125
9199
|
error: z3.string().optional()
|
|
9126
9200
|
},
|
|
@@ -9135,7 +9209,7 @@ var ProposeScheduledActionSchema = {
|
|
|
9135
9209
|
var ResumeScheduledActionSchema = {
|
|
9136
9210
|
id: "resume-scheduled-action",
|
|
9137
9211
|
upstreamName: "resumeScheduledActionTool",
|
|
9138
|
-
description: "Resume a paused scheduled action. Its next run is computed fresh from now, not backfilled for time spent paused.",
|
|
9212
|
+
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.",
|
|
9139
9213
|
input: {
|
|
9140
9214
|
id: z3.string().min(1).describe("The scheduled action id.")
|
|
9141
9215
|
},
|
|
@@ -9171,14 +9245,34 @@ var RevokeScheduleLinkSchema = {
|
|
|
9171
9245
|
openWorldHint: false
|
|
9172
9246
|
}
|
|
9173
9247
|
};
|
|
9248
|
+
var SetScheduleDefaultsSchema = {
|
|
9249
|
+
id: "set-schedule-defaults",
|
|
9250
|
+
upstreamName: "setScheduleDefaultsTool",
|
|
9251
|
+
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.",
|
|
9252
|
+
input: {
|
|
9253
|
+
defaultTimezone: z3.string().nullable().describe('IANA timezone name, e.g. "America/Denver". null clears the default (new schedules fall back to UTC).')
|
|
9254
|
+
},
|
|
9255
|
+
output: {
|
|
9256
|
+
ok: z3.boolean(),
|
|
9257
|
+
defaultTimezone: z3.string().nullable().optional().describe("The default timezone now in effect; null means UTC."),
|
|
9258
|
+
error: z3.string().optional()
|
|
9259
|
+
},
|
|
9260
|
+
annotations: {
|
|
9261
|
+
title: "Set Schedule Defaults",
|
|
9262
|
+
readOnlyHint: false,
|
|
9263
|
+
destructiveHint: false,
|
|
9264
|
+
idempotentHint: true,
|
|
9265
|
+
openWorldHint: false
|
|
9266
|
+
}
|
|
9267
|
+
};
|
|
9174
9268
|
var SetScheduleEntitlementSchema = {
|
|
9175
9269
|
id: "set-schedule-entitlement",
|
|
9176
9270
|
upstreamName: "setScheduleEntitlementTool",
|
|
9177
|
-
description: "Admin-only scheduled-action credential provisioning and historical-row recovery.
|
|
9271
|
+
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.",
|
|
9178
9272
|
input: {
|
|
9179
9273
|
granteeIdentity: z3.string().min(1).describe("Identity whose scheduling entitlement is being set (e.g. an email)."),
|
|
9180
9274
|
enabled: z3.boolean().optional().describe("Historical entitlement value for migration/recovery only. Omit to preserve the stored value."),
|
|
9181
|
-
quotaPerPeriod: z3.number().optional().describe("Historical monthly
|
|
9275
|
+
quotaPerPeriod: z3.number().optional().describe("Historical monthly quota for migration/recovery only. Omit to preserve the stored value."),
|
|
9182
9276
|
mcpScraperApiKey: z3.string().optional().describe("The identity's mcp-scraper API key, stored encrypted, used to reach mcp-scraper tools during scheduled-action execution.")
|
|
9183
9277
|
},
|
|
9184
9278
|
output: {
|
|
@@ -9423,9 +9517,9 @@ var QueryTableSchema = {
|
|
|
9423
9517
|
var ListTagsSchema = {
|
|
9424
9518
|
id: "list-memory-tags",
|
|
9425
9519
|
upstreamName: "listTagsTool",
|
|
9426
|
-
description: "List the live canonical tag vocabulary, aliases, usage counts, and per-vault distribution.
|
|
9520
|
+
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.",
|
|
9427
9521
|
input: {
|
|
9428
|
-
includeDeprecated: z3.boolean().optional()
|
|
9522
|
+
includeDeprecated: z3.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.")
|
|
9429
9523
|
},
|
|
9430
9524
|
output: {
|
|
9431
9525
|
ok: z3.boolean(),
|
|
@@ -9437,7 +9531,7 @@ var ListTagsSchema = {
|
|
|
9437
9531
|
var ResolveTagsSchema = {
|
|
9438
9532
|
id: "resolve-memory-tags",
|
|
9439
9533
|
upstreamName: "resolveTagsTool",
|
|
9440
|
-
description: "Resolve proposed concepts against the live tag vocabulary. Returns reuse, create, or omit
|
|
9534
|
+
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.",
|
|
9441
9535
|
input: {
|
|
9442
9536
|
candidates: z3.array(z3.object({ tag: z3.string().min(1), central: z3.boolean().optional(), reusable: z3.boolean().optional(), description: z3.string().optional() })).min(1).max(20)
|
|
9443
9537
|
},
|
|
@@ -9451,7 +9545,7 @@ var ResolveTagsSchema = {
|
|
|
9451
9545
|
var UpsertTagSchema = {
|
|
9452
9546
|
id: "upsert-memory-tag",
|
|
9453
9547
|
upstreamName: "upsertTagTool",
|
|
9454
|
-
description: "Define or curate one canonical tag, its meaning, aliases, and lifecycle.
|
|
9548
|
+
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.",
|
|
9455
9549
|
input: {
|
|
9456
9550
|
tag: z3.string().min(1),
|
|
9457
9551
|
description: z3.string().optional(),
|
|
@@ -9607,17 +9701,17 @@ var ListVaultsSchema = {
|
|
|
9607
9701
|
var ProvisionDefaultsSchema = {
|
|
9608
9702
|
id: "provision-defaults",
|
|
9609
9703
|
upstreamName: "provisionDefaultsTool",
|
|
9610
|
-
description: "Provision the standard
|
|
9704
|
+
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.",
|
|
9611
9705
|
input: {
|
|
9612
|
-
granteeIdentity: z3.string().min(1).describe("Identity that should OWN the
|
|
9613
|
-
issueKey: z3.boolean().optional().describe("When true, also issue a new API key for the identity entitled to all
|
|
9706
|
+
granteeIdentity: z3.string().min(1).describe("Identity that should OWN the 14 default vaults (e.g. an email or user id)."),
|
|
9707
|
+
issueKey: z3.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."),
|
|
9614
9708
|
plan: z3.enum(["free", "pro", "team", "enterprise"]).optional().describe("Subscription plan carried by the issued key. Optional; defaults to free. Only used when issueKey is true.")
|
|
9615
9709
|
},
|
|
9616
9710
|
output: {
|
|
9617
9711
|
ok: z3.boolean().describe("True when provisioning succeeded; false on auth/scope error."),
|
|
9618
9712
|
identity: z3.string().optional().describe("Identity the vaults were provisioned for."),
|
|
9619
|
-
created: z3.array(z3.string()).optional().describe("Vault names newly created on this call (empty when all
|
|
9620
|
-
vaults: z3.array(z3.string()).optional().describe("All
|
|
9713
|
+
created: z3.array(z3.string()).optional().describe("Vault names newly created on this call (empty when all 14 already existed)."),
|
|
9714
|
+
vaults: z3.array(z3.string()).optional().describe("All 14 default vault names the identity now owns."),
|
|
9621
9715
|
keyId: z3.string().optional().describe("Stable id of the issued key. Present only when issueKey was true."),
|
|
9622
9716
|
secret: z3.string().optional().describe("The issued key secret \u2014 RETURNED ONCE. Present only when issueKey was true."),
|
|
9623
9717
|
plan: z3.string().optional().describe("Plan assigned to the issued key. Present only when issueKey was true."),
|
|
@@ -9654,9 +9748,9 @@ var RouteMemorySchema = {
|
|
|
9654
9748
|
var VideoAnalyzeStartSchema = {
|
|
9655
9749
|
id: "video-analyze-start",
|
|
9656
9750
|
upstreamName: "videoAnalyzeStartTool",
|
|
9657
|
-
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.
|
|
9751
|
+
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.",
|
|
9658
9752
|
input: {
|
|
9659
|
-
sourceUrl: z3.string().url().describe("
|
|
9753
|
+
sourceUrl: z3.string().url().describe("A YouTube, Facebook, Instagram, TikTok, or Vimeo URL (downloaded automatically), or a direct video file URL (.mp4/.webm/.mov/.gif)."),
|
|
9660
9754
|
intervalS: z3.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."),
|
|
9661
9755
|
maxFrames: z3.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."),
|
|
9662
9756
|
detail: z3.enum(["fast", "standard", "deep"]).optional().describe("Analysis depth. Default standard."),
|
|
@@ -9793,6 +9887,7 @@ var MEMORY_TOOL_SCHEMAS = [
|
|
|
9793
9887
|
GraphPathSchema,
|
|
9794
9888
|
GraphUniverseSchema,
|
|
9795
9889
|
LibraryIngestSchema,
|
|
9890
|
+
BulkDeleteNotesSchema,
|
|
9796
9891
|
DeleteNoteSchema,
|
|
9797
9892
|
ExportSchema,
|
|
9798
9893
|
GetSchema,
|
|
@@ -9811,6 +9906,7 @@ var MEMORY_TOOL_SCHEMAS = [
|
|
|
9811
9906
|
ProposeScheduledActionSchema,
|
|
9812
9907
|
ResumeScheduledActionSchema,
|
|
9813
9908
|
RevokeScheduleLinkSchema,
|
|
9909
|
+
SetScheduleDefaultsSchema,
|
|
9814
9910
|
SetScheduleEntitlementSchema,
|
|
9815
9911
|
CostUsageSchema,
|
|
9816
9912
|
StorageUsageSchema,
|
|
@@ -9916,4 +10012,4 @@ export {
|
|
|
9916
10012
|
registerMemoryMcpTools,
|
|
9917
10013
|
MemoryMcpToolExecutor
|
|
9918
10014
|
};
|
|
9919
|
-
//# sourceMappingURL=chunk-
|
|
10015
|
+
//# sourceMappingURL=chunk-NC37L5RW.js.map
|