mcp-scraper 0.55.0 → 0.56.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/CHANGELOG.md +12 -0
- package/README.md +2 -2
- package/dist/bin/api-server.cjs +55 -20
- 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 +26 -4
- package/dist/bin/mcp-stdio-server.cjs.map +1 -1
- package/dist/bin/mcp-stdio-server.js +4 -4
- package/dist/chunk-245IAJ7R.js +7 -0
- package/dist/chunk-245IAJ7R.js.map +1 -0
- package/dist/{chunk-WYLIDW4S.js → chunk-JEZW6N2X.js} +27 -5
- package/dist/chunk-JEZW6N2X.js.map +1 -0
- package/dist/{chunk-PGI2QPFE.js → chunk-LUJYVNO7.js} +2 -2
- package/dist/{chunk-PGI2QPFE.js.map → chunk-LUJYVNO7.js.map} +1 -1
- package/dist/{chunk-2FL5FXMV.js → chunk-NP66MZ5A.js} +2 -2
- package/dist/{chunk-N4LT53JX.js → chunk-WO2SSENO.js} +3 -3
- package/dist/{chunk-N4LT53JX.js.map → chunk-WO2SSENO.js.map} +1 -1
- package/dist/{extract-bundle-3CRG7FAN.js → extract-bundle-6KYTD55T.js} +3 -3
- package/dist/{server-WKBCZ2TH.js → server-SETYJPYO.js} +37 -24
- package/dist/{server-WKBCZ2TH.js.map → server-SETYJPYO.js.map} +1 -1
- package/dist/{site-extract-repository-QSRPXNMI.js → site-extract-repository-YGNYFTNE.js} +3 -3
- package/dist/{worker-W5C6SKZT.js → worker-DTVBN3RQ.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-V2QWNGEK.js +0 -7
- package/dist/chunk-V2QWNGEK.js.map +0 -1
- package/dist/chunk-WYLIDW4S.js.map +0 -1
- /package/dist/{chunk-2FL5FXMV.js.map → chunk-NP66MZ5A.js.map} +0 -0
- /package/dist/{extract-bundle-3CRG7FAN.js.map → extract-bundle-6KYTD55T.js.map} +0 -0
- /package/dist/{site-extract-repository-QSRPXNMI.js.map → site-extract-repository-YGNYFTNE.js.map} +0 -0
- /package/dist/{worker-W5C6SKZT.js.map → worker-DTVBN3RQ.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ All notable changes to MCP Scraper are documented here. The format is based on [
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.56.0] - 2026-08-16
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Transparent Commons entity edits now publish. A missing or stale `baseRevision` previously made the write land as a `pending_review` proposal that nothing in the system could approve, so the edit was parked permanently after charging the caller. Edits apply on top of the current revision and the divergence is recorded on the public contribution ledger.
|
|
12
|
+
- A Commons proposal that is not applied is refunded, so an `always_review` hold no longer costs 10 or 2 Credits for a row that never publishes.
|
|
13
|
+
- `commons_submit_entity`, the validation warnings, the entity profile contract, and the server instructions no longer describe the removed block-on-conflict behavior.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- `commons_get_proposal` reads back one `commons_submit_entity` proposal owned by the calling account, including its review reason and whether it has been applied. The REST route already existed with no tool bound to it.
|
|
18
|
+
|
|
7
19
|
## [0.55.0] - 2026-08-14
|
|
8
20
|
|
|
9
21
|
### Added
|
package/README.md
CHANGED
|
@@ -90,7 +90,7 @@ Build the branded one-click bundle:
|
|
|
90
90
|
npm run build:mcpb
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
-
The generated bundle is written to `build/mcpb/mcp-scraper-<version>.mcpb` and copied to `public/downloads/` for the hosted download. The current public bundle is `https://mcpscraper.dev/downloads/mcp-scraper.mcpb` (`0.
|
|
93
|
+
The generated bundle is written to `build/mcpb/mcp-scraper-<version>.mcpb` and copied to `public/downloads/` for the hosted download. The current public bundle is `https://mcpscraper.dev/downloads/mcp-scraper.mcpb` (`0.56.0`, SHA-256 `72928532db3280859d5d51283b1828acb66911cfb7cbd179ffc7925fd33d0d73`). Install it by opening or dragging it into Claude Desktop. Claude displays the `MCP Scraper` install card, icon, and API-key configuration field from the bundle manifest.
|
|
94
94
|
|
|
95
95
|
The MCPB install exposes every tool — web-intelligence plus all `browser_*` tools — through the one `mcp-scraper` server.
|
|
96
96
|
|
|
@@ -248,7 +248,7 @@ The `mcp-scraper` server (and the MCPB bundle, which runs it) exposes both secti
|
|
|
248
248
|
|
|
249
249
|
All MCP tools expose output schemas and return `structuredContent` with the IDs, URLs, CSV paths, transcripts, browser session handles, replay paths, artifacts, recipe fields, or blueprint fields needed by the next step. Browser Agent tools keep a JSON text block for older clients, but structured data is the primary contract. All tools carry MCP annotations; file-writing tools such as replay downloads and annotations state their filesystem side effects.
|
|
250
250
|
|
|
251
|
-
The canonical tool inventory is generated at `docs/mcp-tool-manifest.generated.json`. The unified server exposes
|
|
251
|
+
The canonical tool inventory is generated at `docs/mcp-tool-manifest.generated.json`. The unified server exposes 250 tools: 149 scraper, browser, workflow, billing, and connected-service tools plus 101 durable-memory tools. The scraper-side inventory includes governed Local Sourcebook tools, Transparent Commons entity, linkset, and publication tools, the searchable News Publisher and Editorial Reading Room template workflow, and 24 X-Ray tools for pixel administration, reporting, attribution journeys, campaign links, exports, and scheduled reports. Successful evidence-compiled Local Sourcebook revisions publish automatically to their canonical `localsourcebook.com` category profile and review URLs; administrator controls handle exceptional rejection or unpublishing. Release verification compares the exact local and hosted tool-name sets, not only the count.
|
|
252
252
|
|
|
253
253
|
For contract parity, stdio and MCPB memory calls invoke the matching public tool on the hosted MCP Scraper `/mcp` endpoint. The hosted aggregate runtime owns MCP Scraper-specific billing, scheduling, credential, and in-process cutover policy; its internal `/memory/mcp-call` bridge is a fallback to the standalone memory service, not the public stdio execution path. Direct `mcp-memory` OAuth and stdio clients continue to use `memory.mcpscraper.dev` and must be verified as a separate dependent release surface.
|
|
254
254
|
|
package/dist/bin/api-server.cjs
CHANGED
|
@@ -12455,8 +12455,8 @@ var init_product_contract_generated = __esm({
|
|
|
12455
12455
|
"freeSignupCredits": 0
|
|
12456
12456
|
},
|
|
12457
12457
|
"inventory": {
|
|
12458
|
-
"totalTools":
|
|
12459
|
-
"scraperTools":
|
|
12458
|
+
"totalTools": 250,
|
|
12459
|
+
"scraperTools": 149,
|
|
12460
12460
|
"memoryTools": 101
|
|
12461
12461
|
},
|
|
12462
12462
|
"concurrencyPack": {
|
|
@@ -44624,7 +44624,7 @@ var PACKAGE_VERSION;
|
|
|
44624
44624
|
var init_version = __esm({
|
|
44625
44625
|
"src/version.ts"() {
|
|
44626
44626
|
"use strict";
|
|
44627
|
-
PACKAGE_VERSION = "0.
|
|
44627
|
+
PACKAGE_VERSION = "0.56.0";
|
|
44628
44628
|
}
|
|
44629
44629
|
});
|
|
44630
44630
|
|
|
@@ -44690,7 +44690,7 @@ seam is noted so you can chain them.
|
|
|
44690
44690
|
prepare-memory-write: it returns the live entity profile contract, duplicate candidates, tag reuse/review/create
|
|
44691
44691
|
guidance, recommended sections, optional sections, and heading guidance before any write occurs.
|
|
44692
44692
|
- Validate a composed entity without writing -> **commons_validate_entity**. Use it after composing and before submit
|
|
44693
|
-
to catch missing featured images, missing source/body evidence, duplicate
|
|
44693
|
+
to catch missing featured images, missing source/body evidence, duplicate candidates, and
|
|
44694
44694
|
unsupported placeholder sections.
|
|
44695
44695
|
- Create or edit a public wiki entity -> **commons_submit_entity**. This is a governed proposal write,
|
|
44696
44696
|
not direct rendered HTML editing. Normal workflow is prepare -> validate -> submit. Pick the closest entity type
|
|
@@ -44698,6 +44698,9 @@ seam is noted so you can chain them.
|
|
|
44698
44698
|
Trail, or PublicArticle.
|
|
44699
44699
|
Creating a new entity costs 10 Credits; editing an existing entity costs 2 Credits. Preparation, validation,
|
|
44700
44700
|
search, and reads are free. Reusing the same idempotency key for a retry does not charge twice.
|
|
44701
|
+
Commons is an open wiki. Any account may edit any entity, and every edit publishes immediately and is
|
|
44702
|
+
tracked on the public contribution ledger with the actor, the changed fields, and a before/after snapshot.
|
|
44703
|
+
Pass baseRevision on an edit so the ledger records whether it landed on top of a newer revision.
|
|
44701
44704
|
The body must be a neutral encyclopedia projection, not a blog post or raw scrape dump. Use H2 for the
|
|
44702
44705
|
entity's main sections and H3/H4/H5 for subtopics; every heading becomes a public page-menu item.
|
|
44703
44706
|
Entity profiles are adaptive contracts, not empty templates. Use the prepare output as the guide, but omit
|
|
@@ -46450,7 +46453,7 @@ var init_contracts = __esm({
|
|
|
46450
46453
|
});
|
|
46451
46454
|
|
|
46452
46455
|
// src/mcp/mcp-tool-schemas.ts
|
|
46453
|
-
var import_zod43, WEBSITE_URL_OR_DOMAIN_ERROR, WebsiteUrlOrDomainSchema, HarvestPaaInputSchema, ExtractUrlBaseInputSchema, ExtractUrlInputSchema, ExtractUrlLocalInputSchema, DiffPageBaseInputSchema, DiffPageInputSchema, DiffPageLocalInputSchema, MapSiteUrlsInputSchema, MapWaybackSnapshotsInputSchema, ExtractSiteInputSchema, AuditSiteInputSchema, CheckSiteExportInputSchema, ArchiveReadInputSchema, YoutubeHarvestInputSchema, YoutubeTranscribeInputSchema, FacebookPageIntelInputSchema, FacebookAdSearchInputSchema, RedditThreadInputSchema, RedditTrendingInputSchema, VideoFrameAnalysisInputSchema, VideoFrameAnalysisStatusInputSchema, FacebookAdTranscribeInputSchema, FacebookVideoTranscribeInputSchema, GoogleAdsSearchInputSchema, GoogleAdsPageIntelInputSchema, GoogleAdsTranscribeInputSchema, InstagramProfileContentInputSchema, InstagramMediaDownloadInputSchema, MapsPlaceIntelInputSchema, TrustpilotReviewsInputSchema, G2ReviewsInputSchema, ReviewCardSchema, MapsSearchInputSchema, DirectoryWorkflowInputSchema, LocationMarketsInputSchema, CommonsSearchEntitiesInputSchema, CommonsGetEntityInputSchema, CommonsGetEntityLinksetInputSchema, CommonsFeaturedImageInputSchema, CommonsMediaInputSchema, CommonsCitationInputSchema, CommonsSourceInputSchema, CommonsRelatedLinkInputSchema, CommonsClaimInputSchema, CommonsPrepareEntityInputSchema, CommonsSubmitEntityInputSchema, CommonsValidateEntityInputSchema, CommonsGetEntityLedgerInputSchema, CommonsSaveFilterInputSchema, CommonsListFiltersInputSchema, CommonsListNeedsLinksInputSchema, CommonsGenericOutputSchema, DirectoryWorkflowStatusInputSchema, LocalSourcebookSubmitInputSchema, LocalSourcebookCategorySchema, LocalSourcebookSchemaTypeInputSchema, LocalSourcebookTagCandidateObjectSchema, LocalSourcebookTagDecisionObjectSchema, LocalSourcebookIdentityObjectSchema, GetLocalSourcebookContractInputSchema, ListLocalSourcebookTagsInputSchema, ResolveLocalSourcebookTagsInputSchema, PrepareLocalSourcebookWriteInputSchema, ValidateLocalSourcebookWriteInputSchema, LocalSourcebookCaptureInputSchema, LocalSourcebookSubmissionStatusInputSchema, LocalSourcebookRefreshInputSchema, LocalSourcebookOutputSchema, ArtifactPointerOutputSchema, EditorialReadingRoomSiteSchema, EditorialReadingRoomImageSchema, EditorialReadingRoomArticleSchema, EditorialReadingRoomGuideInputSchema, EditorialReadingRoomGuideOutputSchema, CreateEditorialReadingRoomInputSchema, EditorialReadingRoomArtifactSchema, CreateEditorialReadingRoomOutputSchema, RenewEditorialReadingRoomDownloadInputSchema, RenewEditorialReadingRoomDownloadOutputSchema, CommonsPublicationSubdomainSchema, CommonsPreparePublicationInputSchema, CommonsValidatePublicationInputSchema, CommonsClaimPublicationInputSchema, CommonsPublishEditorialInputSchema, CommonsGetPublicationInputSchema, RankTrackerModeSchema, RankTrackerBlueprintInputSchema, NullableString, MapsSearchAttemptOutput, MapsSearchOutputSchema, DirectoryMapsBusinessOutput, DirectoryCsvArtifactOutput, DirectoryWorkflowOutputSchema, LocationDatasetProvenanceOutput, LocationMarketsOutputSchema, RankTrackerToolPlanOutput, RankTrackerTableOutput, RankTrackerCronJobOutput, RankTrackerBlueprintOutputSchema, OrganicResultOutput, AiOverviewOutput, EntityIdsOutput, HarvestPaaOutputSchema, SearchSerpOutputSchema, PageMediaAssetOutput, PageMediaArtifactOutput, ExtractUrlOutputSchema, DiffPageOutputSchema, ExtractSiteOutputSchema, AuditSiteOutputSchema, CheckSiteExportOutputSchema, ArchiveEntryOutputSchema, ArchiveReadOutputSchema, MapsPlaceIntelOutputSchema, TrustpilotReviewsOutputSchema, G2ReviewsOutputSchema, CreditsInfoOutputSchema, MapSiteUrlsOutputSchema, WaybackCaptureOutputSchema, MapWaybackSnapshotsOutputSchema, YoutubeHarvestOutputSchema, FacebookAdSearchOutputSchema, VideoFrameAnalysisOutputSchema, VideoFrameAnalysisStatusOutputSchema, RedditThreadOutputSchema, RedditTrendingOutputSchema, FacebookPageIntelOutputSchema, GoogleAdsSearchOutputSchema, GoogleAdsPageIntelOutputSchema, TranscriptSignalOutput, FacebookVideoTranscribeOutputSchema, TranscriptChunkOutput, InstagramBrowserOutput, InstagramPaginationOutput, InstagramProfileContentOutputSchema, InstagramMediaTrackOutput, InstagramDownloadOutput, InstagramMediaDownloadOutputSchema, YoutubeTranscribeOutputSchema, FacebookAdTranscribeOutputSchema, GoogleAdsTranscribeOutputSchema, CaptureSerpSnapshotOutputSchema, CaptureSerpPageSnapshotsOutputSchema, CreditsInfoInputSchema, WorkflowIdSchema2, WorkflowListInputSchema, WorkflowSuggestInputSchema, WorkflowRunInputSchema, WorkflowStepInputSchema, WorkflowStatusInputSchema, WorkflowArtifactReadInputSchema, WorkflowRecipeOutput, WorkflowDefinitionOutput, WorkflowArtifactOutput, WorkflowListOutputSchema, WorkflowSuggestOutputSchema, WorkflowRunOutputSchema, WorkflowStepOutputSchema, WorkflowStatusOutputSchema, WorkflowArtifactReadOutputSchema, SearchSerpInputSchema, CaptureSerpSnapshotInputSchema, ScreenshotInputSchema, CaptureSerpPageSnapshotsInputSchema, ReportArtifactReadInputSchema, ReportArtifactReadOutputSchema, ListServiceConnectionsInputSchema, ListServiceConnectionsOutputSchema, TestServiceConnectionInputSchema, TestServiceConnectionOutputSchema, ReadServiceConnectionInputSchema, ReadServiceConnectionOutputSchema, MetaAdCreativeMediaInputSchema, MetaAdCreativeMediaOutputSchema, ImportServiceConnectionToMemoryInputSchema, ImportServiceConnectionToMemoryOutputSchema, DescribeServiceConnectionToolInputSchema, DescribeServiceConnectionToolOutputSchema, ConnectedDataContinuationSchema, ExportConnectedServiceDataInputSchema, ConnectedDataArtifactSchema, ExportConnectedServiceDataOutputSchema, SearchConsoleTableColumnSchema, SearchConsoleTableFilterSchema, ExportSearchConsoleTableDataInputSchema, ExportSearchConsoleTableDataOutputSchema, RenewConnectedDataExportDownloadInputSchema, RenewConnectedDataExportDownloadOutputSchema, CallServiceConnectionActionInputSchema, CallServiceConnectionActionOutputSchema, SetScheduledActionConnectionsInputSchema, SetScheduledActionConnectionsOutputSchema, SlackSendMessageInputSchema, SlackSendMessageOutputSchema, GmailSendMessageInputSchema, GmailSendMessageOutputSchema, GmailSearchContactsInputSchema, GmailSearchContactsOutputSchema, GoogleCalendarCreateEventInputSchema, GoogleCalendarCreateEventOutputSchema, ZoomCreateMeetingInputSchema, ZoomCreateMeetingOutputSchema;
|
|
46456
|
+
var import_zod43, WEBSITE_URL_OR_DOMAIN_ERROR, WebsiteUrlOrDomainSchema, HarvestPaaInputSchema, ExtractUrlBaseInputSchema, ExtractUrlInputSchema, ExtractUrlLocalInputSchema, DiffPageBaseInputSchema, DiffPageInputSchema, DiffPageLocalInputSchema, MapSiteUrlsInputSchema, MapWaybackSnapshotsInputSchema, ExtractSiteInputSchema, AuditSiteInputSchema, CheckSiteExportInputSchema, ArchiveReadInputSchema, YoutubeHarvestInputSchema, YoutubeTranscribeInputSchema, FacebookPageIntelInputSchema, FacebookAdSearchInputSchema, RedditThreadInputSchema, RedditTrendingInputSchema, VideoFrameAnalysisInputSchema, VideoFrameAnalysisStatusInputSchema, FacebookAdTranscribeInputSchema, FacebookVideoTranscribeInputSchema, GoogleAdsSearchInputSchema, GoogleAdsPageIntelInputSchema, GoogleAdsTranscribeInputSchema, InstagramProfileContentInputSchema, InstagramMediaDownloadInputSchema, MapsPlaceIntelInputSchema, TrustpilotReviewsInputSchema, G2ReviewsInputSchema, ReviewCardSchema, MapsSearchInputSchema, DirectoryWorkflowInputSchema, LocationMarketsInputSchema, CommonsSearchEntitiesInputSchema, CommonsGetEntityInputSchema, CommonsGetEntityLinksetInputSchema, CommonsFeaturedImageInputSchema, CommonsMediaInputSchema, CommonsCitationInputSchema, CommonsSourceInputSchema, CommonsRelatedLinkInputSchema, CommonsClaimInputSchema, CommonsPrepareEntityInputSchema, CommonsSubmitEntityInputSchema, CommonsValidateEntityInputSchema, CommonsGetEntityLedgerInputSchema, CommonsGetProposalInputSchema, CommonsSaveFilterInputSchema, CommonsListFiltersInputSchema, CommonsListNeedsLinksInputSchema, CommonsGenericOutputSchema, DirectoryWorkflowStatusInputSchema, LocalSourcebookSubmitInputSchema, LocalSourcebookCategorySchema, LocalSourcebookSchemaTypeInputSchema, LocalSourcebookTagCandidateObjectSchema, LocalSourcebookTagDecisionObjectSchema, LocalSourcebookIdentityObjectSchema, GetLocalSourcebookContractInputSchema, ListLocalSourcebookTagsInputSchema, ResolveLocalSourcebookTagsInputSchema, PrepareLocalSourcebookWriteInputSchema, ValidateLocalSourcebookWriteInputSchema, LocalSourcebookCaptureInputSchema, LocalSourcebookSubmissionStatusInputSchema, LocalSourcebookRefreshInputSchema, LocalSourcebookOutputSchema, ArtifactPointerOutputSchema, EditorialReadingRoomSiteSchema, EditorialReadingRoomImageSchema, EditorialReadingRoomArticleSchema, EditorialReadingRoomGuideInputSchema, EditorialReadingRoomGuideOutputSchema, CreateEditorialReadingRoomInputSchema, EditorialReadingRoomArtifactSchema, CreateEditorialReadingRoomOutputSchema, RenewEditorialReadingRoomDownloadInputSchema, RenewEditorialReadingRoomDownloadOutputSchema, CommonsPublicationSubdomainSchema, CommonsPreparePublicationInputSchema, CommonsValidatePublicationInputSchema, CommonsClaimPublicationInputSchema, CommonsPublishEditorialInputSchema, CommonsGetPublicationInputSchema, RankTrackerModeSchema, RankTrackerBlueprintInputSchema, NullableString, MapsSearchAttemptOutput, MapsSearchOutputSchema, DirectoryMapsBusinessOutput, DirectoryCsvArtifactOutput, DirectoryWorkflowOutputSchema, LocationDatasetProvenanceOutput, LocationMarketsOutputSchema, RankTrackerToolPlanOutput, RankTrackerTableOutput, RankTrackerCronJobOutput, RankTrackerBlueprintOutputSchema, OrganicResultOutput, AiOverviewOutput, EntityIdsOutput, HarvestPaaOutputSchema, SearchSerpOutputSchema, PageMediaAssetOutput, PageMediaArtifactOutput, ExtractUrlOutputSchema, DiffPageOutputSchema, ExtractSiteOutputSchema, AuditSiteOutputSchema, CheckSiteExportOutputSchema, ArchiveEntryOutputSchema, ArchiveReadOutputSchema, MapsPlaceIntelOutputSchema, TrustpilotReviewsOutputSchema, G2ReviewsOutputSchema, CreditsInfoOutputSchema, MapSiteUrlsOutputSchema, WaybackCaptureOutputSchema, MapWaybackSnapshotsOutputSchema, YoutubeHarvestOutputSchema, FacebookAdSearchOutputSchema, VideoFrameAnalysisOutputSchema, VideoFrameAnalysisStatusOutputSchema, RedditThreadOutputSchema, RedditTrendingOutputSchema, FacebookPageIntelOutputSchema, GoogleAdsSearchOutputSchema, GoogleAdsPageIntelOutputSchema, TranscriptSignalOutput, FacebookVideoTranscribeOutputSchema, TranscriptChunkOutput, InstagramBrowserOutput, InstagramPaginationOutput, InstagramProfileContentOutputSchema, InstagramMediaTrackOutput, InstagramDownloadOutput, InstagramMediaDownloadOutputSchema, YoutubeTranscribeOutputSchema, FacebookAdTranscribeOutputSchema, GoogleAdsTranscribeOutputSchema, CaptureSerpSnapshotOutputSchema, CaptureSerpPageSnapshotsOutputSchema, CreditsInfoInputSchema, WorkflowIdSchema2, WorkflowListInputSchema, WorkflowSuggestInputSchema, WorkflowRunInputSchema, WorkflowStepInputSchema, WorkflowStatusInputSchema, WorkflowArtifactReadInputSchema, WorkflowRecipeOutput, WorkflowDefinitionOutput, WorkflowArtifactOutput, WorkflowListOutputSchema, WorkflowSuggestOutputSchema, WorkflowRunOutputSchema, WorkflowStepOutputSchema, WorkflowStatusOutputSchema, WorkflowArtifactReadOutputSchema, SearchSerpInputSchema, CaptureSerpSnapshotInputSchema, ScreenshotInputSchema, CaptureSerpPageSnapshotsInputSchema, ReportArtifactReadInputSchema, ReportArtifactReadOutputSchema, ListServiceConnectionsInputSchema, ListServiceConnectionsOutputSchema, TestServiceConnectionInputSchema, TestServiceConnectionOutputSchema, ReadServiceConnectionInputSchema, ReadServiceConnectionOutputSchema, MetaAdCreativeMediaInputSchema, MetaAdCreativeMediaOutputSchema, ImportServiceConnectionToMemoryInputSchema, ImportServiceConnectionToMemoryOutputSchema, DescribeServiceConnectionToolInputSchema, DescribeServiceConnectionToolOutputSchema, ConnectedDataContinuationSchema, ExportConnectedServiceDataInputSchema, ConnectedDataArtifactSchema, ExportConnectedServiceDataOutputSchema, SearchConsoleTableColumnSchema, SearchConsoleTableFilterSchema, ExportSearchConsoleTableDataInputSchema, ExportSearchConsoleTableDataOutputSchema, RenewConnectedDataExportDownloadInputSchema, RenewConnectedDataExportDownloadOutputSchema, CallServiceConnectionActionInputSchema, CallServiceConnectionActionOutputSchema, SetScheduledActionConnectionsInputSchema, SetScheduledActionConnectionsOutputSchema, SlackSendMessageInputSchema, SlackSendMessageOutputSchema, GmailSendMessageInputSchema, GmailSendMessageOutputSchema, GmailSearchContactsInputSchema, GmailSearchContactsOutputSchema, GoogleCalendarCreateEventInputSchema, GoogleCalendarCreateEventOutputSchema, ZoomCreateMeetingInputSchema, ZoomCreateMeetingOutputSchema;
|
|
46454
46457
|
var init_mcp_tool_schemas = __esm({
|
|
46455
46458
|
"src/mcp/mcp-tool-schemas.ts"() {
|
|
46456
46459
|
"use strict";
|
|
@@ -46932,6 +46935,9 @@ var init_mcp_tool_schemas = __esm({
|
|
|
46932
46935
|
CommonsGetEntityLedgerInputSchema = {
|
|
46933
46936
|
idOrSlug: import_zod43.z.string().trim().min(1).max(180).describe("Published entity id or /wiki/ slug whose contribution ledger should be read.")
|
|
46934
46937
|
};
|
|
46938
|
+
CommonsGetProposalInputSchema = {
|
|
46939
|
+
proposalId: import_zod43.z.string().trim().min(1).max(120).describe("Proposal id returned by commons_submit_entity, in the form commons-proposal-<uuid>.")
|
|
46940
|
+
};
|
|
46935
46941
|
CommonsSaveFilterInputSchema = {
|
|
46936
46942
|
name: import_zod43.z.string().trim().min(2).max(80).describe("User-facing name for this MCP personalization filter. Reusing a name updates the saved filter."),
|
|
46937
46943
|
description: import_zod43.z.string().trim().max(500).optional().describe("Optional note explaining when this filter should be used."),
|
|
@@ -50447,7 +50453,7 @@ function registerPaaExtractorMcpTools(server, executor, options = {}) {
|
|
|
50447
50453
|
}, async (input) => executor.commonsValidateEntity(input));
|
|
50448
50454
|
server.registerTool("commons_submit_entity", {
|
|
50449
50455
|
title: "Transparent Commons Governed Entity Write",
|
|
50450
|
-
description: "Create or propose an edit to a Transparent Commons public wiki entity through the governed MCP Scraper write plane. A new entity costs 10 Credits; an edit to an existing entity costs 2 Credits. Preparation and validation are free, and idempotent retries are not charged twice. This never edits rendered HTML directly. Normal workflow is commons_prepare_entity, compose, commons_validate_entity, then submit. Choose a precise entityType and write a neutral encyclopedia projection with the matching entity structure, not a blog article or raw scrape dump. Use H2 sections and H3/H4/H5 subitems; every heading appears in the public page menu. Omit unsupported sections instead of publishing empty/filler headings.
|
|
50456
|
+
description: "Create or propose an edit to a Transparent Commons public wiki entity through the governed MCP Scraper write plane. A new entity costs 10 Credits; an edit to an existing entity costs 2 Credits. Preparation and validation are free, and idempotent retries are not charged twice. This never edits rendered HTML directly. Normal workflow is commons_prepare_entity, compose, commons_validate_entity, then submit. Choose a precise entityType and write a neutral encyclopedia projection with the matching entity structure, not a blog article or raw scrape dump. Use H2 sections and H3/H4/H5 subitems; every heading appears in the public page menu. Omit unsupported sections instead of publishing empty/filler headings. Transparent Commons is an open wiki: any account may edit any entity, and every edit publishes and is recorded on the public contribution ledger. Publishing requires a featured image and body/source evidence. Pass baseRevision when editing so the ledger can show whether the edit was written on top of a newer revision. Requires idempotencyKey.",
|
|
50451
50457
|
inputSchema: CommonsSubmitEntityInputSchema,
|
|
50452
50458
|
outputSchema: recordOutputSchema("commons_submit_entity", CommonsGenericOutputSchema),
|
|
50453
50459
|
annotations: {
|
|
@@ -50471,6 +50477,19 @@ function registerPaaExtractorMcpTools(server, executor, options = {}) {
|
|
|
50471
50477
|
openWorldHint: false
|
|
50472
50478
|
}
|
|
50473
50479
|
}, async (input) => executor.commonsGetEntityLedger(input));
|
|
50480
|
+
server.registerTool("commons_get_proposal", {
|
|
50481
|
+
title: "Transparent Commons Proposal Status",
|
|
50482
|
+
description: "Read one commons_submit_entity proposal owned by the calling account. Use it when submit returned a proposal that was held for review instead of published, to see the review reason and whether it has since been applied.",
|
|
50483
|
+
inputSchema: CommonsGetProposalInputSchema,
|
|
50484
|
+
outputSchema: recordOutputSchema("commons_get_proposal", CommonsGenericOutputSchema),
|
|
50485
|
+
annotations: {
|
|
50486
|
+
title: "Transparent Commons Proposal Status",
|
|
50487
|
+
readOnlyHint: true,
|
|
50488
|
+
destructiveHint: false,
|
|
50489
|
+
idempotentHint: true,
|
|
50490
|
+
openWorldHint: false
|
|
50491
|
+
}
|
|
50492
|
+
}, async (input) => executor.commonsGetProposal(input));
|
|
50474
50493
|
server.registerTool("commons_save_filter", {
|
|
50475
50494
|
title: "Transparent Commons Saved MCP Filter",
|
|
50476
50495
|
description: "Save or update an account-scoped Commons search filter so one MCP can behave like many personalized reading rooms, trails, source scopes, categories, or tag bundles. Reusing a filter name updates it.",
|
|
@@ -51518,6 +51537,9 @@ var init_http_mcp_tool_executor = __esm({
|
|
|
51518
51537
|
commonsGetEntityLedger(input) {
|
|
51519
51538
|
return this.getJson(`/commons/entities/${encodeURIComponent(input.idOrSlug)}/ledger`);
|
|
51520
51539
|
}
|
|
51540
|
+
commonsGetProposal(input) {
|
|
51541
|
+
return this.getJson(`/commons/proposals/${encodeURIComponent(input.proposalId)}`);
|
|
51542
|
+
}
|
|
51521
51543
|
commonsSaveFilter(input) {
|
|
51522
51544
|
return this.call("/commons/filters", input);
|
|
51523
51545
|
}
|
|
@@ -64874,18 +64896,17 @@ async function validateCommonsEntity(input, user) {
|
|
|
64874
64896
|
errors.push(`Unsupported placeholder sections must be omitted instead of published: ${placeholderSections.join(", ")}.`);
|
|
64875
64897
|
}
|
|
64876
64898
|
if (existing && input.baseRevision === void 0) {
|
|
64877
|
-
warnings.push(
|
|
64899
|
+
warnings.push(`An existing entity matches this slug or entityId. Submit will edit it on top of revision ${existing.revision} and record the edit on the contribution ledger.`);
|
|
64878
64900
|
}
|
|
64879
64901
|
if (existing && input.baseRevision !== void 0 && input.baseRevision !== existing.revision) {
|
|
64880
|
-
warnings.push(`The matching entity is revision ${existing.revision}; this payload targets revision ${input.baseRevision}. Submit will
|
|
64902
|
+
warnings.push(`The matching entity is revision ${existing.revision}; this payload targets revision ${input.baseRevision}. Submit will apply on top of revision ${existing.revision} and note the divergence on the ledger.`);
|
|
64881
64903
|
}
|
|
64882
64904
|
if (input.reviewPolicy === "always_review") {
|
|
64883
64905
|
warnings.push("reviewPolicy is always_review, so the proposal will not auto-publish even if the payload is otherwise valid.");
|
|
64884
64906
|
}
|
|
64885
64907
|
if (user?.id == null) warnings.push("No authenticated user was supplied to validation; submit still requires API-key authenticated user context.");
|
|
64886
64908
|
const valid = errors.length === 0;
|
|
64887
|
-
const
|
|
64888
|
-
const autoPublishEligible = valid && revisionAllowsAutoPublish && input.reviewPolicy !== "always_review";
|
|
64909
|
+
const autoPublishEligible = valid && input.reviewPolicy !== "always_review";
|
|
64889
64910
|
const tagVocabulary = await commonsTagVocabulary();
|
|
64890
64911
|
return {
|
|
64891
64912
|
ok: true,
|
|
@@ -64945,6 +64966,7 @@ async function submitCommonsEntity(input, user) {
|
|
|
64945
64966
|
entity: entity2,
|
|
64946
64967
|
applied: existingProposal.status === "accepted",
|
|
64947
64968
|
reviewReason: existingProposal.reviewReason,
|
|
64969
|
+
conflictNote: null,
|
|
64948
64970
|
publicUrl: entity2?.status === "published" ? publicUrlForSlug(entity2.slug) : null
|
|
64949
64971
|
};
|
|
64950
64972
|
}
|
|
@@ -65018,7 +65040,7 @@ async function submitCommonsEntity(input, user) {
|
|
|
65018
65040
|
...changedFieldPaths(existing, nextEntity),
|
|
65019
65041
|
...normalized.claims !== void 0 ? ["claims"] : []
|
|
65020
65042
|
]),
|
|
65021
|
-
normalized.changeSummary
|
|
65043
|
+
ledgerSummary(normalized.changeSummary, existing, safety.conflictNote),
|
|
65022
65044
|
existing ? JSON.stringify({
|
|
65023
65045
|
...entityLedgerSnapshot(existing),
|
|
65024
65046
|
...normalized.claims !== void 0 ? { claims: existingClaims } : {}
|
|
@@ -65041,6 +65063,7 @@ async function submitCommonsEntity(input, user) {
|
|
|
65041
65063
|
entity,
|
|
65042
65064
|
applied: shouldApply,
|
|
65043
65065
|
reviewReason: safety.reason,
|
|
65066
|
+
conflictNote: safety.conflictNote,
|
|
65044
65067
|
publicUrl: entity?.status === "published" && shouldApply ? publicUrlForSlug(entity.slug) : null
|
|
65045
65068
|
};
|
|
65046
65069
|
}
|
|
@@ -65234,8 +65257,8 @@ function commonsDatabaseReport() {
|
|
|
65234
65257
|
directPublicHtmlWrites: false,
|
|
65235
65258
|
normalWorkflow: ["commons_prepare_entity", "commons_validate_entity", "commons_submit_entity"],
|
|
65236
65259
|
writesCreate: ["commons_proposals", "commons_ledger", "commons_entities when accepted"],
|
|
65237
|
-
safeAutoPublish: "
|
|
65238
|
-
conflictBehavior: "
|
|
65260
|
+
safeAutoPublish: "Any entity with title, description, featured image, and body/source evidence. Creates and edits both publish.",
|
|
65261
|
+
conflictBehavior: "Anyone may edit any entity. A missing or stale baseRevision still applies on top of the current revision; the divergence is recorded on the contribution ledger.",
|
|
65239
65262
|
billing: { validationCredits: 0, createCredits: LISTING_WRITE_RATE_POLICY.create.credits, editCredits: LISTING_WRITE_RATE_POLICY.edit.credits }
|
|
65240
65263
|
},
|
|
65241
65264
|
searchCorpus: ["title", "disambiguationName", "description", "tags", "keywords", "relatedEntities", "relationship claims", "bodyMarkdown", "sections", "media", "source metadata", "jsonLd"],
|
|
@@ -65557,19 +65580,23 @@ function normalizeClaimsForRepository(input) {
|
|
|
65557
65580
|
throw new CommonsRepositoryError("invalid_claims", error instanceof Error ? error.message : "Claims are invalid.");
|
|
65558
65581
|
}
|
|
65559
65582
|
}
|
|
65583
|
+
function ledgerSummary(changeSummary, existing, conflictNote) {
|
|
65584
|
+
const base = changeSummary || (existing ? "Updated Commons entity." : "Created Commons entity.");
|
|
65585
|
+
return conflictNote ? `${base} ${conflictNote}` : base;
|
|
65586
|
+
}
|
|
65560
65587
|
function evaluatePublishSafety(input, existing) {
|
|
65561
|
-
if (!input.featuredImage?.url) return { safe: false, reason: "A featured image is required before a Commons entity can publish." };
|
|
65588
|
+
if (!input.featuredImage?.url) return { safe: false, reason: "A featured image is required before a Commons entity can publish.", conflictNote: null };
|
|
65562
65589
|
if (!input.bodyMarkdown.trim() && !input.source.originalUrl && !input.source.resolvedUrl) {
|
|
65563
|
-
return { safe: false, reason: "A public entity needs article body text or source evidence before publishing." };
|
|
65590
|
+
return { safe: false, reason: "A public entity needs article body text or source evidence before publishing.", conflictNote: null };
|
|
65564
65591
|
}
|
|
65565
|
-
if (!existing) return { safe: true, reason: null };
|
|
65592
|
+
if (!existing) return { safe: true, reason: null, conflictNote: null };
|
|
65566
65593
|
if (input.baseRevision === void 0) {
|
|
65567
|
-
return { safe:
|
|
65594
|
+
return { safe: true, reason: null, conflictNote: `Applied without baseRevision on top of revision ${existing.revision}.` };
|
|
65568
65595
|
}
|
|
65569
65596
|
if (input.baseRevision !== existing.revision) {
|
|
65570
|
-
return { safe:
|
|
65597
|
+
return { safe: true, reason: null, conflictNote: `Applied on top of revision ${existing.revision}; this edit targeted revision ${input.baseRevision}.` };
|
|
65571
65598
|
}
|
|
65572
|
-
return { safe: true, reason: null };
|
|
65599
|
+
return { safe: true, reason: null, conflictNote: null };
|
|
65573
65600
|
}
|
|
65574
65601
|
function buildNextEntity(input) {
|
|
65575
65602
|
const current = input.existing;
|
|
@@ -67373,7 +67400,15 @@ var init_commons_routes = __esm({
|
|
|
67373
67400
|
if ("insufficient" in charged) return c.json(charged.insufficient, 402);
|
|
67374
67401
|
billing = charged;
|
|
67375
67402
|
const result = await submitCommonsEntity(parsed.data, c.get("user"));
|
|
67376
|
-
|
|
67403
|
+
if (!result.applied) {
|
|
67404
|
+
await refundListingWrite(billing, "Transparent Commons proposal was held for review instead of published.").catch(() => null);
|
|
67405
|
+
return c.json({
|
|
67406
|
+
ok: true,
|
|
67407
|
+
data: result,
|
|
67408
|
+
billing: { ...publicListingWriteBilling(billing), charged: false, refunded: !billing.duplicate }
|
|
67409
|
+
}, 202);
|
|
67410
|
+
}
|
|
67411
|
+
return c.json({ ok: true, data: result, billing: publicListingWriteBilling(billing) }, 201);
|
|
67377
67412
|
} catch (error) {
|
|
67378
67413
|
if (billing) await refundListingWrite(billing, "Transparent Commons write failed before persistence.").catch(() => null);
|
|
67379
67414
|
if (error instanceof CommonsRepositoryError) {
|