mcp-scraper 0.97.1 → 0.98.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.
Files changed (104) hide show
  1. package/CHANGELOG.md +5 -2442
  2. package/README.md +16 -412
  3. package/dist/bin/api-server.js +3 -2
  4. package/dist/bin/mcp-scraper-cli.js +33 -27
  5. package/dist/bin/mcp-scraper-core.js +9 -1
  6. package/dist/bin/mcp-scraper-install.js +17 -2
  7. package/dist/bin/mcp-stdio-server.js +9 -1
  8. package/dist/bin/paa-harvest.js +8 -1
  9. package/dist/index.cjs +5 -21830
  10. package/dist/index.d.ts +14 -607
  11. package/dist/index.js +5 -39
  12. package/dist/transport.d.ts +35 -0
  13. package/package.json +11 -51
  14. package/THIRD_PARTY_NOTICES.html +0 -203
  15. package/dist/actions-5X5CQAKO.js +0 -1
  16. package/dist/artifacts-4ZDNP2JW.js +0 -1
  17. package/dist/artifacts-N62OPIT5.js +0 -1
  18. package/dist/artifacts-PSADD5OC.js +0 -1
  19. package/dist/artifacts-RUR3OHAK.js +0 -1
  20. package/dist/blob-store-GIH26EDO.js +0 -1
  21. package/dist/bundle-GS657HXG.js +0 -1
  22. package/dist/chunk-24YDQ3EO.js +0 -5
  23. package/dist/chunk-2L7CHN5N.js +0 -4
  24. package/dist/chunk-3F7AFM53.js +0 -1
  25. package/dist/chunk-4AEW53RU.js +0 -954
  26. package/dist/chunk-4HZXATHB.js +0 -27
  27. package/dist/chunk-4YZ74SJ6.js +0 -1
  28. package/dist/chunk-4ZVO6GX4.js +0 -1
  29. package/dist/chunk-55ZANTHL.js +0 -3
  30. package/dist/chunk-5RQWFYXY.js +0 -930
  31. package/dist/chunk-5TQINRZN.js +0 -12
  32. package/dist/chunk-5UQAL7HV.js +0 -41
  33. package/dist/chunk-6D25Q5BR.js +0 -21728
  34. package/dist/chunk-6N5EC7ZO.js +0 -1
  35. package/dist/chunk-7POHNTVW.js +0 -1
  36. package/dist/chunk-7SR7MEU5.js +0 -62
  37. package/dist/chunk-ANQ4JJVI.js +0 -71
  38. package/dist/chunk-B3JRL45T.js +0 -1
  39. package/dist/chunk-B4ZKPLSP.js +0 -1
  40. package/dist/chunk-B5Y26E3A.js +0 -1
  41. package/dist/chunk-C3JWX6KM.js +0 -10
  42. package/dist/chunk-C7MGJUTU.js +0 -1
  43. package/dist/chunk-CNSVZTTT.js +0 -13
  44. package/dist/chunk-EYGA6LOU.js +0 -1
  45. package/dist/chunk-F3M7INSN.js +0 -41
  46. package/dist/chunk-FLAWC5PF.js +0 -5
  47. package/dist/chunk-FM7BX2LU.js +0 -159
  48. package/dist/chunk-HCK6PLM3.js +0 -3
  49. package/dist/chunk-HNNYXMSI.js +0 -1
  50. package/dist/chunk-IFPION5D.js +0 -121
  51. package/dist/chunk-IPQOBOFY.js +0 -1
  52. package/dist/chunk-J7XDXIB6.js +0 -163
  53. package/dist/chunk-JHDD6R3O.js +0 -8
  54. package/dist/chunk-JMZIDHYQ.js +0 -2
  55. package/dist/chunk-K3VDGJNK.js +0 -1
  56. package/dist/chunk-KBZY2OGP.js +0 -11
  57. package/dist/chunk-KJQXUZ4Y.js +0 -4
  58. package/dist/chunk-KXJCGV3H.js +0 -1
  59. package/dist/chunk-NALXKTUU.js +0 -1
  60. package/dist/chunk-NNOX3FYG.js +0 -198
  61. package/dist/chunk-NQFTETVC.js +0 -189
  62. package/dist/chunk-OILOHQNL.js +0 -2
  63. package/dist/chunk-OLYPLX5C.js +0 -1
  64. package/dist/chunk-P6CDR3RM.js +0 -1
  65. package/dist/chunk-PKQHHCO4.js +0 -20
  66. package/dist/chunk-QCBCOEH5.js +0 -1
  67. package/dist/chunk-QER2ELZP.js +0 -1
  68. package/dist/chunk-RDHGQ2WZ.js +0 -1
  69. package/dist/chunk-SDQW7IJN.js +0 -1
  70. package/dist/chunk-SEZETSB3.js +0 -1
  71. package/dist/chunk-SJNSTO3C.js +0 -42
  72. package/dist/chunk-TZYITYL4.js +0 -2
  73. package/dist/chunk-UIOSADPB.js +0 -1718
  74. package/dist/chunk-UNEJYZ4T.js +0 -102
  75. package/dist/chunk-UUJYICAJ.js +0 -1
  76. package/dist/chunk-VVSHZV5S.js +0 -73
  77. package/dist/chunk-WNUXMPVX.js +0 -1
  78. package/dist/chunk-XNTAHMPA.js +0 -218
  79. package/dist/chunk-ZDECILF6.js +0 -16
  80. package/dist/chunk-ZNPGM3XE.js +0 -4
  81. package/dist/compatibility-UPPKZ4KY.js +0 -1
  82. package/dist/contracts-GUXGFCVV.js +0 -1
  83. package/dist/core-schema-Y47YFKH2.js +0 -899
  84. package/dist/direct-completion-ZVPPEBDU.js +0 -1
  85. package/dist/dispatch-GRMMPKQD.js +0 -1
  86. package/dist/editorial-reading-room/assets/app.js +0 -433
  87. package/dist/editorial-reading-room/assets/index.html +0 -139
  88. package/dist/editorial-reading-room/assets/styles.css +0 -1091
  89. package/dist/index.d.cts +0 -607
  90. package/dist/jobs-NRZHGQ7I.js +0 -1
  91. package/dist/media-artifacts-67CJWI7O.js +0 -1
  92. package/dist/metering-YHZ46GV4.js +0 -1
  93. package/dist/migrations-3AKEC5QE.js +0 -1
  94. package/dist/queue-2VKW7SGH.js +0 -1
  95. package/dist/reconciliation-QC6SILLR.js +0 -1
  96. package/dist/report-artifact-offload-PQNFDNPL.js +0 -1
  97. package/dist/repository-CYXVMYAI.js +0 -1
  98. package/dist/repository-UKDA4IWP.js +0 -1
  99. package/dist/server-EYMJROPX.js +0 -5544
  100. package/dist/settlement-47EUTSGX.js +0 -1
  101. package/dist/vendor-errors-647LSH6H.js +0 -1
  102. package/dist/worker-AWJF7UYR.js +0 -1
  103. package/public/.well-known/xray-install.json +0 -183
  104. package/public/agent-install.md +0 -200
package/CHANGELOG.md CHANGED
@@ -1,2448 +1,11 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to MCP Scraper are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project follows semantic versioning for published packages.
4
-
5
- ## [Unreleased]
6
-
7
- ## [0.97.1] - 2026-10-15
8
-
9
- ### Fixed
10
-
11
- - Keep upstream identities, session identifiers and service diagnostics out of public job and Maps responses and generated clients.
12
- - Refund failed browser requests after an explicit connection rejection, and safely recover original holds without repeating work or issuing duplicate refunds.
13
- - Recover failed search holds across supported search methods. Preserve uncertain connection outcomes for reconciliation.
14
- - Mark Maps runs partial when requested fields are unavailable, and omit unsupported verification-challenge claims from failure summaries.
15
-
16
- - Restore native background execution after an older deployment caused funded extraction jobs to remain pending. Preserve original job identities and billing during recovery.
17
-
18
- ### Changed
19
-
20
- - Allow temporary free X-Ray access across reports, collection, forms, and setup without changing saved trial dates or Thorbit links.
21
-
22
- ## [0.97.0] - 2026-10-13
23
-
24
- ### Removed
25
-
26
- - **Breaking:** Remove recurring actions, workflow schedules, assistant reminders, automatic vault cleanup and their MCP/API/CLI controls. Use the retained tools and manual workflows for requested work; historical notes, results, billing records and credentials remain stored.
27
- - Remove scheduling dashboards, run viewers, add-on pricing and current product guidance. Artifact templates move to their independent workspace and remain available through their existing tools.
28
-
29
- ### Changed
30
-
31
- - Host Memory and admitted background work through the existing native runtime. Preserve scoped search, full-file delivery, operation recovery, subscriptions and credit expiry; internal maintenance continues.
32
- - Publish updated SDKs with scheduling methods removed and template methods in the artifacts namespace. Ordinary connected-service routes use `/connections`; existing connection transport aliases remain compatible.
33
- - Align technical and business reports with the native worker while preserving customer costs, retries, refunds and client attribution.
34
-
35
- ## [0.96.3] - 2026-10-13
36
-
37
- ### Changed
38
-
39
- - Run background website extraction, audits, directory enrichment, lead enrichment, Sourcebook acquisition and video analysis in the existing request runtime. Preserve original jobs, payments, saved phase results and artifacts across bounded continuations without a separate workflow service.
40
- - Remove Inngest runtime dependencies and endpoints. Deploy the server and scheduler together and retire their old Inngest registrations during cutover; a source change alone does not stop previously registered remote jobs.
41
- - Make CTO reports describe the configured native job dispatch and stored queue outcomes instead of querying the retired workflow service.
42
-
43
- ### Fixed
44
-
45
- - Remove one-second database permission polling during browser acquisition while preserving deadline, cancellation, explicit ownership checks and cleanup. Keep PAA client progress checks at least 20 seconds apart.
46
- - Recover accepted jobs interrupted before execution begins, without replacing their job or payment. Keep uncertain already-started work from being acquired again, and preserve the original settlement when execution permission is lost.
47
- - Return prompt background-job handoff receipts so short cron and client requests do not wait for long-running video work.
48
- - Bound manual Memory maintenance by the scheduler's request limit and resume saved progress. Protect built-in workflow routes with the existing scheduler credential and require the native runner for execution.
49
-
50
- ## [0.96.2] - 2026-10-13
51
-
52
- ### Fixed
53
-
54
- - Stop and drain PAA lease heartbeats before capturing and publishing completion, so a completed browser run can settle and report its saved result without falsely losing ownership.
55
- - Refund the original customer hold after a confirmed failed direct SERP API attempt. Same-key recovery settles saved failure without another acquisition, while unresolved provider usage costs remain pending.
56
-
57
- ## [0.96.1] - 2026-10-13
58
-
59
- ### Fixed
60
-
61
- - Wait at least 20 seconds between PAA progress checks, while preserving other operations' retry timing.
62
- - Preserve complete loaded PAA answers, including lists, mathematical notation, entity names and source details. Continue discovering questions when their answers are already prefetched, and avoid repeated DOM reads and unnecessary or uncertain repeat clicks.
63
- - Let managed CAPTCHA recovery finish within the original request deadline. Keep challenge and session traffic in the browser, and avoid unrelated searches during PAA-only extraction.
64
- - Show initial People Also Ask questions, available answer snippets and source labels in full SERP text and structured responses. Distinguish these previews from fully expanded PAA answers.
65
- - Run isolated test fixtures from clean checkouts without requiring one developer's path or branch, and validate Memory package layout against its current versions.
66
-
67
- ### Changed
68
-
69
- - Give acquisition diagnostics a dedicated scripts directory, move contributor guidance into documentation and keep generated output out of the source tree.
70
-
71
- ### Removed
72
-
73
- - Remove the unused crawler UI prototype, broken root acquisition probes and tracked operating-system and Python cache files.
74
-
75
- ## [0.96.0] - 2026-10-12
76
-
77
- ### Security
78
-
79
- - Keep raw browser and provider diagnostics out of public Maps failures and SERP results, including retained files. SERP clients should read normalized capture content from `harvestResult` instead of `providerPayload`.
80
-
81
- ### Added
82
-
83
- - Retrieve complete retained results through `artifact_describe`, `artifact_read` and `artifact_download`. Text reads continue from the returned offset; binary files remain downloadable in their original format, with explicit file and download-link expiry. Temporary MCP results remain accessible for seven days; retained reports keep their existing 24-hour access window.
84
- - Inspect saved failures, retries, fallback attempts, provider costs, billing and cleanup through the admin trace endpoint and CTO report. Inspection reads existing work without rerunning acquisition or changing charges.
85
- - Report customer usage by service and client, including failures, retries, refunds, provider costs, credit spending and cash receipts. Filter customer and fleet reports by time, service, plan and declared client labels, and inspect request chains and degradation windows. Request capture is opt-in through `MCP_ANALYTICS_CAPTURE=1`; missing historical data remains explicit.
86
- - Reconcile reported transcript and search provider charges through hourly maintenance, including spend from failed attempts. Replace estimates on the original receipt without double-counting costs or changing customer credits; delayed and unavailable charges remain distinguishable from zero.
87
-
88
- ### Changed
89
-
90
- - Keep the approved initial MCP routing map concise, and replace the old domain manual with on-demand guidance for chat and terminal delivery, intent and flags, result coverage and recovery. Correct stale generic Memory write descriptions to use the Research and CRM owners; keep tool requirements in their schemas and preparation responses.
91
- - Organize implementations by behavior and state ownership so contributors can edit features in focused files. HTTP and MCP adapters call the feature owners; shared database, execution, billing, concurrency, browser and provider-cost code have dedicated homes. Update the edit guide and remove unused empty source placeholders while preserving public entrypoints and existing credentials.
92
- - Bound ordinary Google Search recovery to two primary attempts followed by one SERP API fallback. Both primary attempts retain the requested page count; the one-page fallback reports partial coverage for a two-page request. Rich one-page searches use the API directly, while date-filtered searches retain their browser route.
93
- - Use account-confirmed browser usage rates for new cost calculations. Show monthly plan allowances and configured hosting estimates separately from request costs, with their date, scope and calculation basis.
94
- - Provide a testing skill for the current implementation that distinguishes isolated candidate checks from production checks.
95
- - Serve the migration branch across the server, web app, Memory and scheduler, with branch-specific automatic deployments. Package branch-local Memory storage and tools into its hosted build so retained-file reads use the same implementation that was tested.
96
-
97
- ### Fixed
98
-
99
- - Preserve complete CRM and Research tool descriptions, correct domain-specific field meanings and keep transport authentication out of public CRM search arguments. Align video limits, transcription fallbacks, ongoing browser costs and write/retry guidance with actual behavior.
100
- - Preserve request IDs on streamed MCP responses so SDK callbacks and customer reports can correlate the completed call.
101
- - Keep oversized MCP tool, resource and Task responses within the shared delivery budget while retaining complete formatted results and transcripts. Preserve small responses, readable previews and recovery identifiers; report storage failures without claiming complete content was saved.
102
- - Authorize retained files against their producer's owner, preserve immutable file versions and reconstruct Unicode across text windows. Reject text reads of binary files, support storage streams without byte-length headers, renew download links and expose retained ZIPs through the existing archive reader. Terminal clients retrieve hosted files through the authenticated backend.
103
- - Preserve complete URL, Wayback, website, connected-data, directory and media results before offload, including page bodies and metadata when local report saving is disabled. Provide full plain-text transcripts alongside structured results and readable manifests for original binary files. Prevent report filename collisions and resume bounded expired-file cleanup without changing durable retention.
104
- - Preserve captured People Also Ask answers, linked entities, citations, source titles, descriptions and organic snippets. Expand available answer controls, report unfinished expansion as partial and retain full JSON and Markdown alongside bounded chat previews.
105
- - Verify the requested Maps business before merging profile data and preserve full review prose through fallback and saved retries. Keep valid profile material when enrichment fails, report incomplete fields and recognize ratings and review counts rendered on separate lines.
106
- - Use native rendered settings for managed browsers and submit Google searches through the homepage form. Preserve query filters, allow bounded automatic challenge recovery within the existing deadline and require readable results after recovery. Explicit interactive viewport requests and screenshot output sizes remain supported.
107
- - Require dedicated SERP credentials and reject incomplete configuration before acquisition. Preserve existing keys and other products' credential selection.
108
- - Preserve funded Reddit comments and the original retry identity across uncertain outcomes. Bound browser work by the request deadline, require confirmed remote cleanup before another attempt and derive refunds from applied charges, reporting unresolved settlement explicitly.
109
- - Preserve captured PAA and Search results, original holds and billing identity across interrupted creation, scheduling, settlement and publication. Same-key retries inspect or resume saved work instead of acquiring it again; stale workers cannot overwrite newer results, and uncertain cleanup stops automatic acquisition retries.
110
- - Recover pending PAA and Search callbacks without discarding completed results or changing their charges. Preserve accepted or uncertain delivery across restarts so a lost response cannot cause an automatic repeat send.
111
- - Prevent overlapping lead-list and directory workers from duplicating row or city acquisition. Require current funding and execution permission, preserve known results after later failures and recover original settlement without duplicate charges or refunds.
112
- - Preserve queued website, lead-list and directory work across expired dispatch claims and lost acknowledgments. Retain original holds when accepted work may still start and report unconfirmed handoffs accurately.
113
- - Prevent overlapping website phases, stale recovery attempts and cancellation from overwriting saved pages or settling another attempt. Rebuild exports from saved content with isolated assembly, validate cached content references and retain complete HTML and Markdown through interrupted recovery.
114
- - Prevent expired or replaced Sourcebook acquisition attempts from publishing stale revisions or refunds. Commit saved revisions and events together and recover lost replies without repeating acquisition.
115
- - Recover operation admissions and billing from saved execution and settlement records. Reject stale wallet writes, preserve original credit allocation and expiry rules, and retain existing billing keys when adopting original holds.
116
- - Charge media transcription by observed clip duration or timed transcript coverage instead of model processing time. Preserve available text and refund the transcription charge when duration is unavailable; expose transcript quality warnings and count spoken words across scripts.
117
- - Run CEO and CTO reports against an explicitly selected source checkout with credentials supplied separately. Support exact hourly windows, maintenance outcomes and customer/degradation reports; scope subscriber counts and recurring revenue to MCP products, distinguish calculated and reported costs and leave unavailable queue or shared-account costs unknown.
118
- - Remove credentials from browser connection errors before they reach logs or callers. Keep source-based startup compatible with extracted formatters, prevent imported test servers from starting background pollers and handle Sourcebook polling failures without unhandled rejections.
119
- - Show the 367-tool inventory consistently in documentation, rate metadata and the terminal installer.
120
-
121
- ## [0.95.2] - 2026-09-29
122
-
123
- ### Fixed
124
-
125
- - Preserve a missing directory job as a non-retryable not-found error in MCP status reads, and remove misleading retry wording from non-retryable extraction failures.
126
-
127
- ### Changed
128
-
129
- - Generate a versioned public REST contract from the Maps search and directory route schemas, and use it to render those API reference rows. The SDK projects the same artifact into OpenAPI, Node types, and Python models.
130
- - Clarify Maps search website availability, local-pack mode, directory job polling, temporary workflow artifacts, and error retry versus billing fields across the API guide and MCP descriptions.
131
-
132
- ## [0.95.1] - 2026-09-25
133
-
134
- ### Fixed
135
-
136
- - Give Google Search browser sessions longer to finish Google's verification challenge and load page two before returning a partial result or refunding a failed search. The wait remains bounded within the request timeout.
137
-
138
- ## [0.95.0] - 2026-09-25
139
-
140
- ### Added
141
-
142
- - Filter Google SERP searches to the past week or past month through a managed browser at 35 Credits per delivered page. Two-page requests follow Google's native Page 2 control. Without a date filter, existing search providers remain primary and the managed browser is the final backup. Browser results contain organic listings only; an available page one is marked partial if page two fails.
143
-
144
- ## [0.94.4] - 2026-09-25
145
-
146
- ### Fixed
147
-
148
- - Scroll through large Google Maps review lists while the previous small review batch is being saved, then wait for that save before sending another batch or returning a result. A shorter pause between scrolls gives the browser more chances to load reviews within Option 1's ten-minute session.
149
-
150
- ## [0.94.3] - 2026-09-25
151
-
152
- ### Fixed
153
-
154
- - Give large Google Maps review requests more scrolling time within Option 1's ten-minute session. A hosted 1,000-review run on 0.94.2 saved 828 reviews before its shorter scrolling allowance expired; this patch uses the remaining session time while retaining saved partial results and count-based billing.
155
-
156
- ## [0.94.2] - 2026-09-25
157
-
158
- ### Fixed
159
-
160
- - Give Google Maps place collection more browser time as the requested review and photo counts grow, up to the provider's ten-minute session limit. Reviews continue to save as they arrive if collection stops early.
161
-
162
- ## [0.94.1] - 2026-09-25
163
-
164
- ### Changed
165
-
166
- - Accept up to 1,000 reviews in a Maps place request across API, MCP, dashboard, and workflows. Scale the review scroll allowance with the requested count and preserve each saved review batch through interrupted runs.
167
- - Read the named business first during Option 2 service and area acquisition, matching the full Option 2 place path. Retry a challenged Option 2 browser once with a fresh session and meter both sessions. Keep a visible partial run and refund its hold if Google challenges both.
168
-
169
- ### Fixed
170
-
171
- - Treat a profile's exhausted review total as collected even when it has fewer reviews than the requested maximum. An unknown total no longer means the business has no reviews.
172
-
173
- ## [0.94.0] - 2026-09-25
174
-
175
- ### Added
176
-
177
- - Recoverable Maps place runs with owner-scoped status, paginated saved reviews and images, and explicit resume tools. MCP now reads the same run after a client timeout.
178
- - Incremental, revision-fenced Maps place checkpoints and five-minute repair of expired attempts and unsettled customer holds. Image ZIP packaging can resume from saved image URLs without reopening a browser.
179
- - Google Maps place calls accept an `include` declaration, including `all`, to request reviews, configured services and areas served, and images within the existing review and image limits.
180
- - Maps uses Option 2 Browser API for requested configured services and areas served, while Option 1 remains the default for direct Google Maps discovery and place details.
181
-
182
- ### Changed
183
-
184
- - Maps place requests reserve the maximum declared base and review charge before browser work, then settle completed attempts to the base plus unique saved reviews. Stopped attempts are refunded; saved results survive a billing repair.
185
- - Ordinary Maps searches now use state-targeted mobile browser egress when `location` names a US state, then direct egress after two failed mobile attempts. Searches without a state use direct egress; the MCP tool asks for a state without exposing proxy settings.
186
-
187
- - Maps search and place requests now use a provider broker and report both the result provider and, for split place requests, the acquisition provider. Option 1 discovery reads the Google Maps feed; Option 2 reads the visible Businesses pack or clicks More businesses for larger service-enriched searches.
188
- - Align Option 2 Maps acquisition with the observed Google Places DOM: recognize the `udm=local` finder after More businesses, open exact `pv-` result cards, read the `#local-place-viewer` profile and its complete Services and Areas Served dialogs, and verify place identity from its `ftid` Maps link. Named service requests use Option 1's place category to reach the organic Businesses pack before Option 2 enrichment.
189
- - Option 2-only named place requests now begin on the organic Google SERP and use the matching knowledge panel's category to find the business in the organic Businesses results. A cold exact-name Places finder is reserved for profiles without a category, and a Google challenge is reported as a CAPTCHA rather than an unexplained missing business.
190
- - Option 2-only place extraction stays in the opened Google Search Places viewer to read profile details, expanded hours, declared services and areas, photos, and review cards up to the requested limits; a live run collected 30 services, 10 areas, 50 reviews, and 10 photo URLs. Maps SERP navigation preserves provider errors and allows up to two minutes for slow Browser API navigation.
191
- - Option 2 Maps search, service acquisition, and place details can start one new browser session after the provider confirms `no_ready_cookies` with zero navigations, separately from Maps extraction retries; that recovery waits five seconds after connecting before navigation.
192
- - Option 2 place review and gallery collection now scale their time and scroll allowances with the declared review and image limits. A default full declaration has a five-minute planning budget; the largest allowed request has nine minutes.
193
-
194
- ### Fixed
195
-
196
- - Attribute Maps provider cost to each browser actually used, including failed and retried Option 2 search, place, services acquisition, and startup recovery sessions. Option 1 rotations and broker fallbacks are linked as retries for CEO reporting, which now shows failed-attempt spend separately. Option 1 costs remain estimates; Option 2 sessions with delayed usage remain pending for reconciliation.
197
- - Include web-app embedding requests in the paid-action inventory and scan web source during future cost-coverage checks.
198
- - Include configured S3-compatible storage and remote media processing in the paid-action inventory, and show live Stripe account fee totals separately from MCP operation costs in the CEO report.
199
-
200
- ## [0.93.4] - 2026-09-24
201
-
202
- ### Fixed
203
-
204
- - Show known paid actions outside the MCP operation ledger and unreconciled account charges in the CEO cost report, so operation receipt coverage cannot be read as complete company spend.
205
- - Check the reviewed paid-action inventory during release verification and include the active Google Search provider in the operation cost contract.
206
-
207
- ## [0.93.3] - 2026-09-24
208
-
209
- ### Fixed
210
-
211
- - Render the CEO report headline and detail from one cost-ledger snapshot, and label cost-linked surcharge multiples as pricing targets rather than guaranteed realized margin.
212
- - Apply the owner-confirmed $1.50 per 1,000 successful Option 2 SERP requests to delivered provider receipts, with a guarded backfill for earlier successful requests. Failed attempts remain visibly unresolved until provider billing evidence is available.
213
-
214
- ## [0.93.2] - 2026-09-24
215
-
216
- ### Fixed
217
-
218
- - Show Google Search and other provider costs in the CEO report with separate calculated, actual-or-measured, and unresolved receipt coverage. Failed queries now stop the report, missing Option 2 SERP rates leave an explicit delivered-but-unpriced receipt, and historical cost rows no longer imply a margin from subscription MRR.
219
-
220
- ## [0.93.1] - 2026-09-24
221
-
222
- ### Fixed
223
-
224
- - Keep explicitly requested two-page Google searches on the provider that supports them. Two-page full requests return organic listings with rich feature status marked unsupported and cost 40 Credits; if page 2 cannot be delivered, an available page 1 is returned as partial and billed for one page.
225
-
226
- ## [0.93.0] - 2026-09-24
227
-
228
- ### Added
229
-
230
- - Let Google Search return available same-page SERP features in full mode, with explicit feature status. Light mode keeps organic positions, URLs, titles, and descriptions.
231
-
232
- ### Changed
233
-
234
- - Keep one page as the default in either Google Search mode. A second page requires an explicit request. Full mode costs 35 Credits per delivered page; light mode retains its existing delivered-provider price.
235
- - Keep Google Search and PAA browser workflows in separate provider paths, with the same durable PAA recovery and billing behavior.
236
-
237
-
238
- ## [0.92.1] - 2026-09-24
239
-
240
- ### Changed
241
-
242
- - Price ordinary Google search at 20 Credits per returned page, or 35 Credits per page when the backup supplies the result. Hold the backup amount before searching and refund the difference after a lower-priced result; failed searches remain refundable.
243
-
244
- ## [0.92.0] - 2026-09-24
245
-
246
- ### Changed
247
-
248
- - Return organic Google search positions, URLs, titles, and descriptions from `search_serp`, with one page by default or two when requested. Location, language, device, recency, and optional module fields remain accepted for compatibility but do not change ordinary searches; saved search identities retain their browser behavior.
249
- - Keep `search_serp` at 60 Credits per logical search while trying a second search after a definite failed attempt and then a final search service fallback. Unknown outcomes do not start another paid attempt, and failed searches are refunded.
250
- - Track each search attempt and estimated provider cost separately for operational reporting, with total internal search duration included in the result.
251
-
252
- ## [0.91.0] - 2026-09-24
253
-
254
- ### Added
255
-
256
- - Transcribe speech from a public TikTok video or short share URL through `tiktok_video_transcribe`, with full text, timed chunks, source details, and a speech-quality signal. When playable media is unavailable, matching public captions can provide a free fallback.
257
- - Track TikTok browser and speech-model provider costs under the TikTok operation, with the same 200-credit base, 2-credit-per-minute speech charge, credit reconciliation, and failed-call refund used for Facebook video transcription.
258
-
259
- ## [0.90.8] - 2026-09-24
260
-
261
- ### Added
262
-
263
- - Record observed provider product, billing tier, usage units, and applied rate snapshots on normalized cost receipts; preserve older receipts through the schema migration.
264
- - Link direct SERP page requests, Maps browser rotations, extraction sessions, shared site-crawl batches, and FAL jobs to operation attempts before provider contact.
265
- - Store provider account-window totals and explicit unattributed variance without distributing the remainder across customer operations.
266
- - Link transcription, Instagram media, and Maps place debit receipts to their operation runs, including additional duration charges.
267
- - Record local caption, media, plain-page, Wayback, Maps detail, and export phases without creating duplicate provider charges.
268
- - Start synchronous and durable site cost runs before discovery, and identify browser discovery retries under the site operation.
269
- - Persist receipt-creation coverage defects when the database remains writable, so missing provider-cost evidence appears in operator reports.
270
- - Check scoped provider metering calls against the generated method registry and reject unregistered methods during local verification.
271
-
272
- ### Changed
273
-
274
- - Price measured browser bandwidth at the applicable standard or premium-domain tier, and record the selected tier and list snapshot on the provider receipt.
275
- - Report receipt identity and known-cost closure separately. CEO and CTO cost views distinguish actual, measured, estimated, pending, and unavailable amounts, with product, method, and retry breakdowns.
276
- - Keep existing wall-time estimates visible as estimates while waiting for provider usage evidence and accepted account rates.
277
- - Attribute Facebook video fallback to the browser session it actually uses, and keep optional rendered capture as a separate browser session cost.
278
- - Keep Instagram browser acquisition and optional FAL transcription under one operation run, with separate provider receipts.
279
- - Count Maps services fallback sessions separately, and stop browser wall-time estimates at session close when a route continues with other work.
280
-
281
- ### Fixed
282
-
283
- - Recover completed single-page extraction results from their original paid job: hosted and installed MCP status expose owner-scoped artifact readback, same-key replay keeps the job receipt, and dashboard history opens the durable job instead of a duplicate activity row.
284
- - Keep the provider-receipt table rewrite out of hosted startup; releases now apply that constraint change through the explicit database migration command, while application instances fail closed when the operator migration is missing.
285
- - Keep the five-minute and hourly maintenance passes within the hosted function's time limit when they start on a cold instance, so hourly billing, retention, and daily cleanup complete and record their runs instead of timing out.
286
- - Stop creating a provider-usage index during hosted startup; the provider-usage lookback now uses the existing timestamp index instead.
287
- - Stop the hourly job-retention sweep from holding the database write lock for minutes: expired completed and failed jobs are now found by insertion order instead of by scanning every job's stored result, which had stalled schema changes, cold starts, and scheduled maintenance for several minutes after each run.
288
-
289
- ## [0.90.7] - 2026-09-23
290
-
291
- ### Changed
292
-
293
- - Run hosted background maintenance on schedules matched to how quickly each result matters: scheduled workflows and queued search jobs every minute, delivery and recovery checks every five minutes, and billing, retention, and cleanup work hourly or daily.
294
- - Deliver submitted X-Ray forms, apply subscription changes from billing webhooks, and index saved Commons entities as soon as the request completes instead of waiting for the next scheduled pass; scheduled passes remain the retry path.
295
- - Run daily cleanup once a full day has passed since its last successful run, so a single missed pass no longer postpones it for a day.
296
- - Reconcile connected-account billing once a day per subscriber, while connecting or disconnecting an account still reconciles immediately.
297
-
298
- ### Fixed
299
-
300
- - Restore X-Ray privacy retention, which had stopped running since 28 August, so expired analytics, identity, form, and delivery data is again deleted on its configured schedule.
301
- - Stop the X-Ray scheduled-delivery backlog from growing and clear the accumulated backlog of stale scheduled work.
302
- - Stop background recovery from repeatedly rechecking completed jobs and unrecoverable provider records, reducing wasted database and provider traffic.
303
- - Report a scheduled-maintenance failure only when work actually fails, rather than whenever work is intentionally deferred to the next pass.
304
-
305
- ## [0.90.6] - 2026-09-22
306
-
307
- ### Added
308
-
309
- - Add one immutable SERP/PAA execution plan per attempt, record planned and observed provider identity, and fail closed when runtime provider selection disagrees with the plan.
310
- - Add normalized provider-cost, billing, refund, retry, and reconciliation evidence to the CEO and CTO reporting path, plus deterministic project-skill projection and repository architecture/topology gates.
311
- - Add a source-backed incident reconciliation for the 22–23 September SERP and Maps failures, including exact timeout debit outcomes, missing-page and location cases, and the Maps attempt/egress chain.
312
-
313
- ### Changed
314
-
315
- - Retire the inactive Personal Assistant from server startup, HTTP and MCP routing, web navigation, Scheduler transitions, generated contracts, and Memory tool registration while preserving its source history, persisted data, secrets, and provider resources behind the verified archive branch.
316
- - Make two-page SERP capture perform a distinct page-two request, preserve page provenance and query/location intent, and report local-pack evidence as present, absent, incomplete, or unknown instead of silently claiming completeness.
317
- - Make Maps retries follow one immutable egress plan, retain location intent, close every browser/proxy attempt, and treat an already-gone Option 1 session as successful cleanup.
318
-
319
- ### Fixed
320
-
321
- - Replay the original synchronous SERP job and settlement under the same idempotency key after response loss instead of starting and charging replacement work.
322
- - Return stable extraction and SERP completeness diagnostics for incomplete provider results, duplicate page content, local-pack uncertainty, and provider mismatches.
323
- - Order provider receipts deterministically within an attempt so reports and incident traces preserve the actual creation sequence.
324
-
325
- ## [0.90.5] - 2026-09-22
326
-
327
- ### Added
328
-
329
- - Add the fixture-tested operation, attempt, provider-receipt, reconciliation, and billing-link foundation needed to trace failed and retried SERP, PAA, Maps, extraction, and transcription work without treating missing provider cost as zero.
330
- - Add a generated MCP cost-coverage manifest and release gate that tracks every hosted input flag plus each named execution method's retry, timeout, billing, and cost-accounting owner.
331
- - Trace direct Option 2 SERP requests and Option 2/Option 1 browser attempts into the shared operation timeline, including provider identities, retry or fallback causality, immediate estimates, hourly due-gated Browser API reconciliation, and customer billing links.
332
- - Add a protected four-cell PAA benchmark runner for Option 1 and Option 2 at 20 and 40 complete questions, with a dry-run contract gate, one paid attempt per cell, sanitized provider evidence, and no automatic replacement run.
333
- - Add a once-daily due-gated purge of raw provider identifiers and verbose diagnostic errors after 30 days while preserving normalized cost facts and hashed correlation keys.
334
-
335
- ### Fixed
336
-
337
- - Skip Option 1 proxy resolution when the active attempt uses Option 2 Browser, removing avoidable Option 1 API traffic from Option 2-first SERP and PAA work.
338
-
339
- ## [0.90.4] - 2026-09-22
340
-
341
- ### Fixed
342
-
343
- - Cast analytics retry clocks before adding PostgreSQL backoff intervals, preventing scheduled analytics lanes from failing when retrying an occurrence.
344
-
345
- ## [0.90.3] - 2026-09-21
346
-
347
- ### Fixed
348
-
349
- - Route ordinary Option 2 SERP searches through the zone's native parsed proxy, returning Google results within the existing bounded deadline while preserving the REST endpoint as a configuration fallback.
350
- - Keep Browser API credentials and interactive PAA behavior independent from the native SERP transport, with one provider request and no hidden retry or browser fallback.
351
-
352
- ## [0.90.2] - 2026-09-21
353
-
354
- ### Fixed
355
-
356
- - Unwrap Option 2's object-valued REST response body before mapping parsed SERP fields, so successful direct searches return their organic results instead of an empty collection.
357
-
358
- ## [0.90.1] - 2026-09-21
359
-
360
- ### Changed
361
-
362
- - Route ordinary `search_serp` calls through one parsed Option 2 SERP API request when the dedicated production zone is configured, avoiding browser startup and cleanup while leaving interactive PAA on Browser API.
363
- - Keep saved SERP identities on their existing Option 1-backed path and retain the browser path as the configuration fallback for local and unconfigured environments.
364
-
365
- ### Fixed
366
-
367
- - Bound the direct provider request inside the ten-second SERP deadline and do not multiply a provider failure through hidden retries or automatic provider fallback.
368
- - Preserve the existing MCP schema, idempotent job receipt, credit settlement, and refund behavior while adapting parsed results into the existing SERP response shape.
369
-
370
- ## [0.90.0] - 2026-09-21
371
-
372
- ### Added
373
-
374
- - Scale customers can buy expiring Credits in whole $10 increments at the Scale plan's existing per-dollar rate, with payment and Checkout-return fulfillment sharing one replay-safe grant.
375
-
376
- ### Fixed
377
-
378
- - Make existing-subscriber upgrades invoice and attempt the proration immediately, grant the new plan Credits synchronously only after the invoice is paid, and block further plan changes while an earlier invoice remains outstanding.
379
-
380
- ## [0.89.10] - 2026-09-21
381
-
382
- ### Fixed
383
-
384
- - Bound browser-provider connection setup by the logical call deadline so a stalled CDP connection cannot survive a ten-second SERP request.
385
- - Bound browser-close acknowledgement to 1.5 seconds after issuing close, preventing cleanup from holding a completed or cancelled function open until Vercel's 800-second ceiling.
386
- - Reserve explicit time inside the ten-second SERP limit for browser cleanup, billing settlement, and the structured response.
387
-
388
- ## [0.89.9] - 2026-09-21
389
-
390
- ### Changed
391
-
392
- - Run ordinary SERP searches as direct, exact-query requests with a ten-second server deadline instead of promoting them into durable background jobs.
393
- - Keep PAA as one continuous durable request with a 400-second absolute lifetime, at most one recovery, no more than two browser sessions, and a 100-question ceiling.
394
- - Report phase timings and separate control, browser, provider-fallback, recovery, and idempotent-replay counts so slow work and retries are visible without exposing provider details through the public tool contract.
395
-
396
- ### Fixed
397
-
398
- - Stop waiting for PAA-specific page state during SERP-only searches, and stop retrying when a partial attempt already produced useful results.
399
- - Preserve the original PAA deadline across recovery so a restarted job cannot receive another full runtime window.
400
- - Reduce unnecessary durable PAA checkpoints while retaining progress evidence at meaningful phase and improvement boundaries.
401
-
402
- ## [0.89.8] - 2026-09-21
403
-
404
- ### Changed
405
-
406
- - Cap every Option 1 browser session at a ten-minute absolute lifetime and move expired-session reconciliation from the minute root cron to a dedicated hourly audit.
407
- - Disable the inactive Personal Assistant reminder, reconciliation, and inbound cron schedules while preserving their routes and implementation.
408
- - Disable the inactive Personal Memory heartbeat and weekly rollup registrations in the production scheduler while preserving their implementation.
409
- - Pause twice-daily automatic memory optimization while preserving the workflow for deliberate use, preventing all-vault fan-out from consuming background execution capacity.
410
- - Admit general retention, scrape-blob cleanup, and expired OAuth-state cleanup hourly, and admit artifact cleanup only at its existing daily times instead of invoking every cleanup from every minute tick.
411
- - Bound PAA to 100 questions and 400 seconds, SERP to 30 seconds, ordinary URL fetching to 20 seconds, complete single-URL extraction to 60 seconds, and transcription to 90 seconds, with slightly longer MCP client waits reserved for response delivery.
412
-
413
- ### Fixed
414
-
415
- - Treat Option 1's not-found response during legacy session deletion as successful cleanup, preventing already-closed sessions from retrying forever.
416
- - Show browser sessions awaiting provider cleanup separately in the CTO report instead of hiding them behind a non-null close timestamp.
417
- - Cast the analytics pruning clock before PostgreSQL interval arithmetic so the root cron no longer fails every minute while pruning scheduled occurrences.
418
- - Explicitly delete Option 1 screenshot sessions after capture, including when closing the browser connection fails.
419
-
420
- ## [0.89.7] - 2026-09-18
421
-
422
- ### Added
423
-
424
- - Added durable `search_serp_status` and `extract_url_status` recovery tools. SERP and single-page extraction now return an owner-scoped job receipt before ordinary MCP client deadlines, use MCP Tasks when the client advertises support, and remain pollable through completion for clients without Tasks.
425
-
426
- ### Changed
427
-
428
- - Make live scrape probes declare production, preview, local-stack, or direct-module execution and record their transport, runtime identity, covered layers, timing, and billing evidence. Paid MCP probes now finish complete tool discovery before measuring tool execution and preserve recovery artifacts when the client times out. Protocol suites now verify the runtime against the generated public tool contract instead of importing a deleted legacy manifest, and read-only startup no longer writes an unconditional synthetic-account credit.
429
- - Run durable single-page extraction through the existing long-running Inngest execution class and a shared extraction runner, preserving the same page, screenshot, branding, media, Wayback, Memory, warning, and error behavior as the synchronous REST compatibility route.
430
-
431
- ### Fixed
432
-
433
- - Claim same-key SERP and single-page extraction jobs before provider work, use one stable debit lineage per job, and replay pending or terminal receipts without a second charge. Terminal extraction replay now remains visible in structured MCP output instead of being dropped by formatting.
434
- - Keep paid live probes attached to the original durable handle through terminal status, recording admission time separately from provider completion instead of treating a fast start receipt as extraction success.
435
- - Prevent ordinary Vitest workflow runs from leaking configured production credentials into Memory artifact ingestion; live sink coverage now requires an explicit test opt-in.
436
-
437
- ## [0.89.6] - 2026-09-18
438
-
439
- ### Added
440
-
441
- - Added a durable Stripe event queue with leased retries, dead-letter visibility, and an authenticated Checkout-session confirmation path for subscription recovery.
442
-
443
- ### Changed
444
-
445
- - Make invoice-ID fulfillment atomically grant subscription credits and project plan entitlements through the same path for webhooks and Checkout returns.
446
-
447
- ### Fixed
448
-
449
- - Return subscription webhooks immediately after durable ingestion so a slow downstream dependency cannot strand a completed Checkout before Stripe receives an acknowledgement.
450
-
451
- ## [0.89.5] - 2026-09-15
452
-
453
- ### Changed
454
-
455
- - Add bounded PAA checkpoint timing events so operators can distinguish browser-provider time from durable progress storage without logging queries or credentials.
456
- - Require the production core-schema migration and a read-only structural verification to pass before the server release is promoted.
457
-
458
- ### Fixed
459
-
460
- - Let a PAA retry begin immediately after its attempt row is durably finished instead of forcing a second progress-document checkpoint at the same boundary.
461
-
462
- ## [0.89.4] - 2026-09-14
463
-
464
- ### Changed
465
-
466
- - Make live probe receipts identify whether they used an operator-configured API key, including an operator-declared account label and a non-secret key fingerprint, while reserving synthetic-account terminology for tests that actually provision that account.
467
-
468
- ### Fixed
469
-
470
- - Report the account's effective concurrency limit in `credits_info` instead of silently showing one slot when the API returned the limit under its canonical field.
471
- - Give in-progress `extract_url` retries their actual deduplication and replay guidance instead of incorrectly directing callers to the PAA status tool.
472
- - Treat omitted REST options and MCP-expanded defaults as the same `extract_url` call when an idempotency key is replayed across client surfaces.
473
- - Fail the release preflight when package, lockfile, runtime, generated manifest, downloadable bundle metadata, README, or tag versions diverge.
474
-
475
- ## [0.89.3] - 2026-09-10
476
-
477
- ### Changed
478
-
479
- - Connect X-Ray Pixel through Thorbit sign-in and active customer status instead of asking customers to paste a Thorbit MCP API key or meet a $50 subscription threshold.
480
-
481
- ### Fixed
482
-
483
- - Report an unavailable Thorbit entitlement bridge as a service outage instead of incorrectly presenting every upstream failure as an invalid API key.
484
-
485
- ## [0.89.2] - 2026-09-09
486
-
487
- ### Changed
488
-
489
- - Made production OAuth configuration explicit and fail-closed, with mode-specific database, epoch, cutoff, and key-ring requirements checked before discovery or mutations can appear healthy.
490
- - Moved dynamic-client-registration admission into the selected canonical OAuth authority under schema version 3, using hashed caller keys, one atomic increment, bounded cleanup, and operator-run schema migration.
491
- - Added an authority-epoch handoff and rollback procedure with accepted recovery objectives of at most 15 seconds of data loss, recovery within one hour, and ten days of point-in-time-recovery retention.
492
-
493
- ### Fixed
494
-
495
- - Removed request-time schema creation and the follow-up count query from the main-database rate limiter; each admitted request now uses one upsert that returns its committed count.
496
-
497
- ### Security
498
-
499
- - Added a guarded production canary command that accepts only the dedicated synthetic account, rotates its password and API key transactionally in memory, withholds database credentials from the verifier, and writes only redacted receipts.
500
-
501
- ## [0.89.1] - 2026-09-08
502
-
503
- ### Changed
504
-
505
- - Added an operator-controlled path to isolate OAuth state in a dedicated Turso database with authority epochs, bounded cleanup, verified migration and rollback, and fail-closed maintenance behavior. Existing OAuth issuer, client setup, API-key authentication, and MCP tool contracts remain unchanged.
506
- - Bounded the root cron by admitting work lazily with explicit concurrency and deadline limits, so timed-out responses no longer eagerly start every maintenance task.
507
- - Routed OAuth and its discovery documents through a small dedicated serverless entrypoint, keeping static discovery and token operations independent of unrelated hosted-product startup gates.
508
- - Made the authorization issuer an explicit HTTPS-origin configuration with the existing production origin as its default, allowing isolated previews to verify their own signing keys without reusing production credentials.
509
-
510
- ### Fixed
511
-
512
- - Made authorization-code exchange and refresh-token rotation atomic and safely retryable after an uncertain database response, including deterministic replay of the one committed result under concurrent requests.
513
- - Accepted standards-compatible HTTPS, loopback, and reverse-domain native redirects while enforcing PKCE syntax, redirect matching, client binding, scope reduction, resource binding, and bounded dynamic registration.
514
-
515
- ### Security
516
-
517
- - Replaced raw OAuth code and refresh-token storage in the canonical store with keyed digests and short-lived authenticated-encryption replay receipts, added key-retention checks, and kept destructive legacy-row cleanup behind a separate explicit gate.
518
-
519
- ## [0.89.0] - 2026-09-04
520
-
521
- ### Added
522
-
523
- - Collect Facebook profile and Page Reel URLs with `facebook_reels_inventory`, including partial results, stopping reasons, and deduplication against previously returned URLs. Anonymous scans return up to 60 URLs; a scan costs 4 credits and is refunded when it adds no new URLs.
524
-
525
- ### Changed
526
-
527
- - Use neutral browser labels in Facebook extraction diagnostics and package the existing local API, library, and CLI with provider-name obfuscation.
528
-
529
- ### Fixed
530
-
531
- - Dismiss optional Facebook login dialogs before extracting public videos and Reel inventories, and retry failed acquisition through a backup browser while preserving useful partial results.
532
-
533
- ## [0.88.3] - 2026-09-02
534
-
535
- ### Fixed
536
-
537
- - Give each `reddit_thread` retrieval a 300-second end-to-end deadline, with two 60-second Option 1 attempts and two 60-second managed-browser backup attempts, instead of exhausting the full retry ladder in about 50 seconds. The MCP client now waits long enough to receive the endpoint's structured terminal result.
538
-
539
- ## [0.88.2] - 2026-09-02
540
-
541
- ### Fixed
542
-
543
- - Normalized mounted `/analytics` route paths before sampled REST response validation, preventing successful X-Ray responses from intermittently becoming `analytics_rest_operation_unknown` 500 errors in production.
544
- - Applied the current additive analytics schema migration so consented authenticated identity events can populate the governed person graph without a missing `crm_entity_id` column failure.
545
-
546
- ## [0.88.1] - 2026-09-02
547
-
548
- ### Fixed
549
-
550
- - Updated the root server's in-process Memory dependency to the released JWT-aware `mcpscraper-memory-tools` 1.19.0 and `mcpscraper-memory-db` 1.18.0, so the unified customer key reaches Memory, Research, and CRM without being mistaken for a retired legacy key.
551
-
552
- ## [0.88.0] - 2026-09-02
553
-
554
- ### Changed
555
-
556
- - Made one `MCP_SCRAPER_API_KEY` authenticate scraping, Memory, Research, and native CRM through the canonical root MCP endpoint; root-to-Memory calls now use short-lived audience-bound owner assertions.
557
- - Reduced the customer-callable unified catalog from 377 to 375 tools by retiring Memory key issuance and scope mutation, while preserving explicit compatibility errors in SDK clients.
558
- - Added strict-schema validation for all 148 direct Memory tools and an authenticated 30-screenshot CRM workspace proof runner covering ten surfaces at wide, compact, and mobile viewports.
559
-
560
- ### Security
561
-
562
- - Stopped normal creation, storage, display, and use of long-lived per-user Memory keys. Existing direct `mk_` credentials remain accepted for one documented compatibility release and can still be listed or revoked.
563
-
564
- ## [0.87.0] - 2026-09-02
565
-
566
- ### Added
567
-
568
- - Added optional `pages: 2` support to synchronous and durable PAA harvests, capturing a second organic result page before expanding questions on the untouched first page.
569
- - Added requested/captured page counts and bounded second-page outcomes to live results, durable recovery, the dashboard, and generated client contracts. A failed optional page-two capture preserves first-page evidence.
570
- ## [0.86.5] - 2026-09-02
571
-
572
- ### Fixed
573
-
574
- - Kept Option 2 telemetry lookup off the Reddit response critical path and reallocated the saved time to 17-second backup attempts, so all four provider attempts can finish before production ends the request.
575
-
576
- ## [0.86.4] - 2026-09-02
577
-
578
- ### Fixed
579
-
580
- - Kept the complete two-primary, two-backup Reddit retry ladder inside the production request window by limiting Option 1 attempts to 8 seconds, Option 2 attempts to 14 seconds, and browser cleanup to 1 second.
581
-
582
- ## [0.86.3] - 2026-09-02
583
-
584
- ### Fixed
585
-
586
- - Applied 45-second Option 1 and 35-second Option 2 deadlines to the complete Reddit browser-attempt lifecycle, and made known-thread primary attempts find and click the target through DuckDuckGo before the residential landing.
587
-
588
- ## [0.86.2] - 2026-09-02
589
-
590
- ### Fixed
591
-
592
- - Bounded the Reddit DOM challenge-readability loop at 90 seconds; production verification showed the surrounding browser lifecycle still needed a complete attempt deadline, which is corrected in 0.86.3.
593
-
594
- ## [0.86.1] - 2026-09-02
595
-
596
- ### Fixed
597
-
598
- - Retried Reddit thread hydration through as many as two fresh primary residential sessions and two bounded managed-browser backup sessions, stopping after the first accepted result while retaining per-attempt provider and cost telemetry.
599
- - Restored visually hidden accessible labels for native CRM and Research search, select, submit, deal-stage, and X-Ray evidence controls.
600
- - Prevented the native CRM and Research toolbar from stretching into a full-height column at tablet and phone breakpoints.
601
- - Routed the native `/research/*` and `/crm/*` REST facades through the production API function instead of allowing the canonical host to fall through to a 404.
602
-
603
- ## [0.86.0] - 2026-09-01
604
-
605
- ### Added
606
-
607
- - Added separate authenticated Research and native CRM workspaces with owner-scoped people, organizations, activities, tasks, deals, pipelines, imports, duplicate review, and quality queues.
608
- - Added 27 governed Memory tools, including native CRM work search and pipeline list/upsert, plus X-Ray handoffs that create or update canonical relationship records without making the analytics store a second CRM.
609
- - Added operator and agent documentation for choosing Research versus CRM, stable ID handoffs, migration gates, preview/apply authority, first-party tracking limits, and provider readiness.
610
-
611
- ### Changed
612
-
613
- - Expanded the unified MCP contract to 377 tools and the direct Memory contract to 148 tools, with generated Node, Python, CLI, cURL, and public product projections kept in parity.
614
- - Redirected legacy Analytics CRM bookmarks into native CRM Settings while preserving recognized X-Ray context, and made Vault creation choose an explicit Research or CRM domain.
615
-
616
- ### Removed
617
-
618
- - Withdrew all public Salesforce, Pipedrive, Stripe, and other external CRM setup, discovery, synchronization, and write operations that lack the complete provider release evidence contract.
619
-
620
- ### Security
621
-
622
- - Kept Research evidence and managed CRM relationships in separate schemas and authority domains; counterpart links copy no fields, governed mutations use owner-scoped IDs and idempotency, and real-customer migration remains blocked pending explicit approval.
623
-
624
- ## [0.85.0] - 2026-09-01
625
-
626
- ### Changed
627
-
628
- - Corrected X-Ray's public contract to a provider-neutral measurement foundation: the Pixel, seven observed attribution models, structured post-purchase surveys, explicit Observed + Reported impact, privacy lifecycle, and truthful unavailable view-evidence states remain supported.
629
- - Advanced the X-Ray install protocol to 3.0.0 and removed provider authorization and revenue-source continuations from generated install guidance.
630
-
631
- ### Removed
632
-
633
- - Removed the four revenue-source setup MCP tools, five REST operations, revenue-setup ResourceTemplate, Stripe dashboard workflow, and deployable Stripe, Salesforce, and Pipedrive Nango registrations until each provider has complete production receipts.
634
-
635
- ### Fixed
636
-
637
- - Routed the public X-Ray product page and nested attribution and SaaS guides through the canonical `mcpscraper.dev` host instead of leaving the successfully deployed web routes unreachable behind the API project.
638
-
639
- ## [0.84.0] - 2026-09-01
640
-
641
- ### Added
642
-
643
- - Added authoritative SaaS revenue connections with one primary source per outcome family, canonical outcome keys, replay-safe reconciliation, value restatements, and observation-only comparison sources that cannot create duplicate revenue.
644
- - Added versioned post-purchase surveys and an opt-in Observed + Reported impact report that keeps customer answers separate from deterministic touches, requires explicit weights, and conserves attribution credit and revenue per currency.
645
- - Added ten operation-specific X-Ray MCP tools plus methodology and revenue-setup Resources for revenue setup, survey lifecycle, impact reporting, and provider-backed view availability.
646
- - Added a governed Stripe subscription connector for account readiness and bounded outcome reconciliation; credentials continue to move through the authorized connection flow rather than tool input.
647
-
648
- ### Changed
649
-
650
- - Expanded SaaS setup into one evidence-derived sequence covering the global tag, advertising, lifecycle channels, revenue authority, calls and demos, currency and timezone, consent, and a server-confirmed outcome test.
651
- - View-through attribution now reports unavailable or unproven unless an eligible event-level provider receipt can join to a consented subject; aggregate impression reports remain comparison evidence only.
652
- - Advanced the X-Ray install protocol to 2.1.0 and expanded the generated analytics REST contract to cover revenue, surveys, methodology, reported impact, and view-evidence status.
653
-
654
- ### Security
655
-
656
- - Added privacy lifecycle coverage for revenue authorities, provider customer bindings, immutable outcome versions, survey invitations and answers, reported influences, and provider-view receipts.
657
- - Survey delivery uses opaque single-use invitations, a server-issued session cookie, strict origin controls, bounded structured answers, and no contact fields, free text, raw invitation tokens, or provider credentials in analytics records.
658
-
659
- ### Migration
660
-
661
- - Advance the analytics schema before enabling SaaS revenue authorities or post-purchase surveys. Survey publication remains gated until approved disclosure copy is configured, and provider-backed view reporting remains unavailable until lawful event-level evidence is proven.
662
-
663
- ## [0.83.5] - 2026-09-01
664
-
665
- ### Fixed
666
-
667
- - Allowed auto-discovered rules to verify bounded repeated DOM matches, including parallel desktop/mobile navigation and repeated semantic CTAs, instead of falsely treating every selector as unique.
668
-
669
- ## [0.83.4] - 2026-09-01
670
-
671
- ### Fixed
672
-
673
- - Collapsed repeated route-and-selector setup candidates into one runtime rule, preventing one semantic CTA interaction from emitting duplicate events.
674
- - Published `data-xray-event` selectors as semantic rules so the Pixel records the element's live CTA placement, component, action, destination, plan, value, currency, and content dimensions.
675
-
676
- ## [0.83.3] - 2026-09-01
677
-
678
- ### Fixed
679
-
680
- - Translated the public MCP setup vocabulary into the canonical REST preparation contract, so documented `same_origin`, consent, goal, and page-limit inputs no longer fail with a 400 response.
681
- - Let the unified setup facade derive a stable retry key for ordinary non-delivering verification, keeping idempotency safe without requiring the customer to invent a key.
682
-
683
- ## [0.83.2] - 2026-09-01
684
-
685
- ### Fixed
686
-
687
- - Scoped auto-discovered X-Ray click and form rules to the route where each CTA was observed, preventing shared selectors from tagging unrelated pages.
688
- - Made runtime health report only route-eligible rules and made setup verification retain the strongest observed selector match across routes instead of an arbitrary database row.
689
-
690
- ## [0.83.1] - 2026-09-01
691
-
692
- ### Fixed
693
-
694
- - Allowed the X-Ray Pixel to authenticate normal same-origin runtime-manifest and health requests from their approved `Referer` hostname when browsers omit the `Origin` header, while preserving approved-domain enforcement and failing closed when neither header identifies an HTTP origin.
695
-
696
- ## [0.83.0] - 2026-09-01
697
-
698
- ### Added
699
-
700
- - Added a digest-bound X-Ray runtime manifest that remotely publishes versioned event rules through the globally installed Pixel, reports bounded selector health, observes SPA and dynamic DOM changes, and preserves consent and privacy boundaries without requiring site-source access.
701
- - Added pre-registered X-Ray experiments with deterministic assignment, separate exact-revision approval, canary and production states, five allowlisted presentation operations, exposure evidence, fixed-horizon evaluation, sample-ratio checks, and pause/kill rollback controls.
702
- - Added `analytics_create_experiment`, `analytics_set_experiment_state`, and `analytics_get_experiment`, expanding the governed unified MCP catalog to 363 tools.
703
-
704
- ### Changed
705
-
706
- - Replaced X-Ray's repository, branch, writer, patch, and draft-PR setup model with one-time global tag verification followed by X-Ray-owned measurement-manifest publication. GitHub remains an optional general integration and is no longer part of X-Ray setup.
707
- - Advanced the canonical X-Ray install protocol to 2.0.0 and aligned its MCP Resource, Prompt, npm CLI, public Markdown, well-known JSON, REST contract, and dashboard projections around the tag-only control plane.
708
-
709
- ### Migration
710
-
711
- - Advance the analytics schema to `2026-09-01.1` before enabling runtime manifests or experiments. Existing active event definitions remain compatible and measurement publication does not activate a visitor experiment.
712
-
713
- ## [0.82.0] - 2026-08-31
714
-
715
- ### Added
716
-
717
- - Added `analytics_setup_site` with explicit prepare, apply, and verify operations, durable owner-bound revisions and receipts, whole-site Pixel and CTA discovery, eight-dimensional readiness, and truthful first-customer answers at zero MCP Scraper Credit charge under an active X-Ray entitlement.
718
- - Added a versioned agent-install protocol across public Markdown/JSON, npm CLI output, an MCP Resource, an owner-isolated setup ResourceTemplate, and the `setup_xray_site` Prompt for Codex, Claude, Cursor, Windsurf, and Cline.
719
- - Added a trusted internal `xray_entitlement` extraction billing class that persists zero-charge jobs without wallet holds, debit keys, or ledger settlement.
720
-
721
- ### Changed
722
-
723
- - Expanded the unified MCP catalog from 356 to 360 tools with operation-specific setup contracts, generated REST parity, private discovery caching where supported, and a measured reviewed catalog budget.
724
- - Added privacy-safe semantic CTA metadata for placement, component, action, destination, and plan while excluding labels, form values, URLs and query strings, email addresses, phone-like values, and arbitrary datasets.
725
-
726
- ### Fixed
727
-
728
- - Installed exactly one first-party Pixel across both the Next.js marketing application and all eight static/API blog documents, and added reusable semantic CTA tagging to shared marketing components.
729
- - Removed the duplicate initial PageView caused by pre-granted consent while retaining one PageView for each actual SPA navigation or blocked-to-granted consent transition.
730
-
731
- ## [0.81.0] - 2026-08-31
732
-
733
- ### Added
734
-
735
- - Added a Option 1-only Reddit workflow that searches DuckDuckGo with a `site:reddit.com` query, switches the same browser to a residential proxy before clicking the selected result, and reads modern Reddit posts plus bounded rendered-comment expansion through dedicated search, thread, and combined REST endpoints.
736
- - Added a bounded managed-browser backup for Reddit thread hydration after the primary Option 1 attempt fails or returns fewer than the semantic target, capped at 25 comments with measured bandwidth, duration, CAPTCHA, closure, and provider-cost telemetry.
737
-
738
- ### Changed
739
-
740
- - Routed the production `reddit_thread` and `reddit_trending` MCP tools through modern Reddit on Option 1 residential sessions, with DuckDuckGo site search for trend discovery; removed Google and old Reddit from their active execution path while preserving tool names, billing rates, bounded partial results, and refunds.
741
- - Cost probes now include Reddit Option 1 sessions and any managed-browser fallback bytes and cost in the same request receipt, and identify when the backup contributed to total cost.
742
-
743
- ### Fixed
744
-
745
- - Reconciled delayed managed-browser fallback telemetry back into its linked cost probe, correcting stored vendor totals and both margin estimates after provider finalization; cost probes now label unresolved provider cost as pending instead of reporting a false zero.
746
- - Measured the package-entrypoint size guard against files selected by the package publish allowlist while continuing to reject source maps anywhere in the built distribution.
747
- - Account publishing lists accept hosted routing metadata while retaining strict pagination, filtering, and account isolation.
748
- - Added a private, paginated publishing inventory for each account’s wiki contributions, publication subdomains and editions, and Local Sourcebook listings, with canonical links and current publication status.
749
- - Validated Twilio and HubSpot X-Ray webhook signatures against the exact public callback URL instead of an internal deployment origin or Vercel rewrite query, allowing genuine provider events to become live evidence after reverse-proxy delivery.
750
-
751
- ## [0.80.0] - 2026-08-29
752
-
753
- ### Added
754
-
755
- - Added a resumable Personal Assistant setup journey that separates product availability, operator activation, provider connections, sender registration and binding, personal-phone enrollment and consent, first-message testing, and per-feature readiness without erasing healthy state when one dependency is unavailable.
756
- - Added verified recipient enrollment through inbound `START` or a short-lived web challenge, with masked owner-scoped contact records, versioned consent disclosures, safe resend and removal flows, and explicit sender and destination identity throughout Assistant and Scheduling.
757
- - Added owner-safe diagnostics, fixed-message delivery tests, encrypted unknown-sender quarantine and authenticated claim flows, MMS and attachment lifecycle states, cost and usage controls, and reviewed export, revocation, removal, deletion, and number-release ceremonies.
758
- - Added `assistant_diagnostics_get` and `assistant_delivery_test`, bringing the public catalog to 356 tools and the governed Assistant surface to 17 tools while preserving its two resources and one setup prompt.
759
-
760
- ### Changed
761
-
762
- - Made Scheduling the only Personal Assistant automation lifecycle owner, with exact draft, readiness, reviewed persistence, activation, accepted readback, connection operations, browser login grants, delivery destinations, fallbacks, quiet hours, urgent exceptions, retry, expiry, and failure-notification parity.
763
- - Expanded the authenticated Assistant owner API to 77 closed-schema operations and regenerated the OpenAPI, MCP manifest, CLI, cURL, Node, and Python contracts without generic or unknown schema fallbacks.
764
- - Replaced generic hosted-adapter and “finish setup” failures with component-owned activation blockers, truthful connection health, safe retry guidance, and opaque support receipts.
765
-
766
- ### Security
767
-
768
- - Kept regulatory contact information separate from delivery consent, prevented ambiguous tenant routing and hidden quarantined content from reaching an assistant, and required exact owner, sender, recipient, consent, grant, schedule, and idempotency evidence at every external-write boundary.
769
- - Versioned `START`, `STOP`, `HELP`, privacy, terms, enrollment, first-message, and carrier-submission copy so live messaging policy can evolve without rewriting submitted provider evidence.
770
-
771
- ### Migration
772
-
773
- - Advance the Personal Assistant database schema and deployment contract to `2026-08-28.13` before enabling the new recipient, quarantine, first-text diagnostic, or lifecycle routes. Hosted outbound messaging remains unavailable until the configured vault, Twilio resources, provider clients, administrator write authority, and carrier registration gates are verified.
774
-
775
- ## [0.79.4] - 2026-08-29
776
-
777
- ### Fixed
778
-
779
- - Pinned the public schema runtime used by fresh npm installs, preventing dependency-range drift from changing 35 datetime-bearing MCP input schemas between hosted production and the published stdio package.
780
- - Added fresh-registry hosted-versus-stdio contract parity to the patch-release gate, so an accepted publication is not treated as complete until the downloaded package reproduces the canonical 354-tool contract.
781
-
782
- ## [0.79.3] - 2026-08-29
783
-
784
- ### Fixed
785
-
786
- - Persisted per-control PAA dispatch and 0.7/1.0/1.4-second confirmation telemetry in durable checkpoints, exposed recent interaction and attempt correlation through MCP status, attached Option 2 session IDs immediately after browser launch, and finalized dangling attempt rows during lease recovery without blocking customer settlement.
787
- - Prevented inline style, script, and hidden DOM text inside Google answer containers from falsely confirming that PAA answer material loaded.
788
- - Routed canonical `/assistant` page loads to the web app and the redacted private Assistant readiness endpoint to the main API function, preventing production 404s after the 0.79.1 launch.
789
-
790
- ## [0.79.2] - 2026-08-28
791
-
792
- ### Fixed
793
-
794
- - Rejected Google loading and error placeholders as PAA answers, retried interrupted controls without misreporting frontier exhaustion, preserved complete answer/source material from retained DOM, and resolved surviving Google `/goto` evidence after a late browser disconnect without visiting publisher pages.
795
- - Advanced requested question counts through bounded newest-frontier click batches with 0.7–1.4 second observation windows, reducing a verified 35-question complete harvest from 347 seconds to 83 seconds while retaining actual multi-question click growth.
796
-
797
- ## [0.79.1] - 2026-08-28
798
-
799
- ### Fixed
800
-
801
- - Contained unresolved Personal Assistant provider-authority gates to the assistant surface, which remains fail-closed with 503 readiness, instead of crashing unrelated MCP, billing, analytics, migration, and cron routes in the shared API process.
802
-
803
- ## [0.79.0] - 2026-08-28
804
-
805
- ### Added
806
-
807
- - Added Scheduling as the canonical Personal Assistant setup surface, with connection readiness for Gmail, Calendar, Zoom, browser profiles, Memory, SMS, and email; exact schedule confirmation; approval and spend review; run history; and explicit watch/takeover states.
808
- - Added owner-scoped browser profiles that can hold multiple independently verified login bindings, while every browser schedule grant selects one exact profile, login, domain, and action set.
809
- - Added immutable schedule revisions, readiness receipts, append-only activation records, additive legacy schedule projection, and single-owner occurrence transition receipts so migration cannot silently infer browser authority or double-dispatch work.
810
- - Added Option 1 and private-Mac browser runtime boundaries with collision-resistant tenant namespaces, per-owner concurrency ceilings, bounded sessions, explicit and timeout cleanup, owner-qualified account deletion, and provider deletion readback.
811
- - Added an owner-controlled Personal Assistant that brings SMS/MMS, Gmail, Google Calendar, Zoom, browser work, reminders, and Memory context packets into one governed workflow with immutable plans, approval checkpoints, spend limits, and durable receipts.
812
- - Added Twilio number discovery, owned-number attachment, purchase and registration previews, Messaging Service readiness, signed inbound and delivery webhooks, safe MMS ingestion, deterministic opt-out handling, single and reviewed bulk messaging, and reconciliation for unknown provider outcomes.
813
- - Added immutable, revisioned Memory context packets with source and attachment provenance, Gmail full-message imports, MMS media metadata, lifecycle controls, and readback verification against the selected vault.
814
- - Added a portable Codex harness and command-ledger runtime for restart-safe assistant work, bounded wake packets, signed worker claims, short-lived tool leases, approval suspension and resume, deterministic reminders, and governed Gmail, Calendar, Zoom, and browser execution.
815
- - Added the authenticated `/api/v1/assistant` owner API, signed private worker routes, an `/assistant` web workspace, 15 public assistant MCP tools, two owner-scoped resources, and the `assistant_setup` prompt. Private webhook, Cron, database, credential, and worker operations remain outside the public contract.
816
- - Added a sanitized legacy-data salvage and migration path that preserves explicit scoped consent and inbound evidence, quarantines unresolved ownership or provider identifiers, rejects inferred consent and legacy send-ready claims, and supports deterministic rollback from a disposable staging store.
817
-
818
- ### Changed
819
-
820
- - **Breaking — Personal Assistant scheduler ownership:** Personal Assistant schedules and model-assisted work now use the main command ledger and portable harness instead of the legacy Mastra/Inngest scheduled-action path. Environments adopting the assistant must provision the dedicated `assistant` database schema and signed worker boundary; legacy Scheduler remains only for unrelated maintenance workloads.
821
- - **Public contract:** Owner authority now comes only from authenticated server context. Assistant request bodies use opaque references and cannot supply owner IDs, provider identifiers, credentials, signed URLs, SQL, or private worker operations; mutations require bounded idempotency and return receipt-based status for safe readback.
822
- - Hosted browser setup and takeover remain disabled in production until MCP Scraper owns an opaque HTTP/WebSocket proxy or the browser provider supplies an equivalent opaque embed contract; the provider-iframe transport remains test-only.
823
- - Release verification now pins the immutable Personal Assistant artifact commit and proves it is an ancestor of the release-metadata commit, avoiding a self-referential `HEAD` requirement while still rejecting divergent or unavailable source identities.
824
- - The Personal Assistant is implemented and fixture-tested, and its source, generated contracts, web UI, Memory packages, migration utilities, harness bundle, and operating skills are packaged in this repository. Production activation still requires the release deployment, database migration, provider callbacks, and an approved spare-Mac worker installation.
825
- - Personal Assistant Mac workers now support an explicit private staging profile with an isolated authenticated Codex home, a self-contained pinned runtime outside macOS protected folders, launchd supervision, live task submission, restart recovery, and a verified prior-artifact rollback target; FileVault, firewall, and backup remain production-promotion gates.
826
-
827
- ### Fixed
828
-
829
- - Mac harness installation now fails closed until the named LaunchAgent owns an initialized app-server heartbeat, and task submission retains final assistant messages delivered through incremental completion events instead of reporting a completed turn as empty.
830
-
831
- ### Security
832
-
833
- - Browser takeover now uses owner-authenticated, one-time claims with view-only leases by default, exact control upgrades, stale/replay rejection, and sanitized persistence that excludes provider profile names, session IDs, CDP endpoints, cookies, local profile paths, and credentials.
834
- - Added a fail-closed five-level authority model that intersects provider capability, connection state, scoped grants, consent, suppression, registration, quiet hours, immutable approval bindings, spend ceilings, and short-lived leases before any external or destructive action.
835
- - Added deterministic `STOP`, `START`, and `HELP` handling, append-only consent and suppression evidence, per-recipient bulk-send rechecks, frozen audience digests, abuse ceilings, kill switches, and internal do-not-contact precedence; inbound activity and imported data never imply outbound consent.
836
- - Twilio webhooks now verify signatures against the exact raw request and canonical public URL before tenant lookup, deduplicate callbacks, keep attachment bytes and provider identifiers private, and preserve uncertain side effects for reconciliation instead of blindly retrying.
837
- - Twilio inbound webhooks now commit an owner-encrypted SMS/MMS envelope before acknowledgement, require the exact Messaging Service, enforce durable authenticated quotas, serialize only within each sender lane, and route unknown senders to web setup without exposing their message to the assistant.
838
- - Assistant logs, wake packets, MCP/API results, and Memory references exclude secrets, database access, signed URLs, raw provider identifiers, attachment bytes, and full recipient identifiers; provider and retrieved content remains explicitly untrusted data rather than executable authority.
839
-
840
- ## [0.78.0] - 2026-08-28
841
-
842
- ### Changed
843
-
844
- - Made `maxQuestions` an explicit target count rather than a traversal-depth control, with separate discovery and material-completeness diagnostics.
845
- - Preserved complete People Also Ask, AI Overview, and organic-result link provenance in JSON, structured MCP output, and CSV while classifying plain links and Google redirect links explicitly.
846
- - Resolved opaque Google `/goto` targets through bounded concurrent manual-redirect requests with active-browser interception as a fallback, without following publisher destinations and without dropping unresolved material.
847
- - Aligned the bounded PAA production-provider canary with the public `maxQuestions` contract and made Option 2 the default test provider.
848
-
849
- ### Fixed
850
-
851
- - Distinguished a healthy three-pass PAA frontier exhaustion from failed, disappeared, or timed-out browser interactions; interrupted jobs now renew fenced leases, resume automatically on the same job ID, and stop after a bounded recovery budget.
852
- - Checkpointed the initial SERP material before PAA expansion so a worker interruption retains already captured AI Overview citations, organic rankings, entities, forums, videos, and local results.
853
- - Required an exact visible AI Overview label before accepting an overview container, preventing ordinary sponsored blocks from being misclassified as AI answers.
854
- - Kept synchronous and durable PAA results consistent for question identifiers, all answer sources, SERP modules, link-resolution status, and completeness diagnostics.
855
-
856
- ## [0.77.0] - 2026-08-28
857
-
858
- ### Fixed
859
-
860
- - The visual event picker can now minimize away from covered page headers, keeps the selected target visibly confirmed, and waits for a dashboard acknowledgement before showing “Added”; the confirmation explicitly distinguishes an editable draft from a saved event.
861
- - Required-consent Pixels now render the newest complete published gateway on approved websites, inherit the host font, apply the saved brand treatment, preserve equal-effort choices and Global Privacy Control, and durably record necessary-only decisions instead of exposing non-rendering helper code.
862
-
863
- ## [0.76.0] - 2026-08-28
864
-
865
- ### Added
866
-
867
- - Added a stable `mcp-scraper-core` executable that gives Thorbit exactly 34 direct public-web scraping and analysis tools while keeping integrations, connected-account actions, Scheduler, Memory, browser-agent, analytics, publishing, Commons, lead-list, Local Sourcebook, and generic workflows unregistered and uncallable.
868
-
869
- ### Changed
870
-
871
- - Shared the canonical schemas and handlers between the full and restricted stdio entrypoints, with fail-closed startup when a required restricted tool is missing or malformed; the normal `mcp-scraper` executable remains full-surface.
872
-
873
- ### Fixed
874
-
875
- - Made Commons ledger reads deterministic when multiple writes share the same timestamp, preventing release verification from observing an arbitrary operation order.
876
-
877
- ## [0.75.1] - 2026-08-28
878
-
879
- ### Fixed
880
-
881
- - Parsed quoted Vercel environment files before analytics migrations, so the documented production migration command resolves the real PostgreSQL host without a custom wrapper while preserving process-level overrides.
882
-
883
- ## [0.75.0] - 2026-08-28
884
-
885
- ### Added
886
-
887
- - Added a production X-Ray customer loop spanning tiered onboarding, editable and live-verifiable event definitions, deterministic known-person journeys, seven attribution models, CRM/call connections, governed manual data movement, ad-platform activation, privacy lifecycle controls, and durable scheduled lanes.
888
- - Added fail-closed capability and privacy registries, normalized analytics error envelopes, CSV formula neutralization, deletion-aware provider send fences, and complete retention/anonymization coverage across analytics relations.
889
- - Added dedicated MCP tools and REST operations for CRM preview/commit/export, Google Ads CSV export, Meta technical export, activation mappings and automation, live event verification, enhanced person journeys, and scheduled operations.
890
-
891
- ### Changed
892
-
893
- - Reworked X-Ray setup around Minimum, Production, and Advanced outcomes; kept Business selection stable across setup, testing, visual picking, navigation, CRM, and activation; and separated simulations from persisted live evidence.
894
- - Rebuilt journey and attribution reporting around confirmed versus candidate-assisted evidence, deep-linkable person histories, actionable lead-generation summaries, responsive tables and charts, and explicit unavailable or unproven states.
895
- - Expanded the public MCP catalog to 339 tools and generated the Web, documentation, authority, SDK, and package contracts from the same release inventory.
896
-
897
- ### Fixed
898
-
899
- - Prevented candidate identity, withdrawn consent, or deleted subjects from reaching CRM and ad-provider transports, and prevented IP, coarse location, or device continuity from independently confirming a person.
900
- - Made activation readiness depend on accepted provider receipts, preserved Google partial-failure evidence and Meta event IDs, and kept unsupported manual or direct-upload claims unavailable instead of optimistic.
901
- - Added responsive release proof across all 12 X-Ray routes at seven viewport widths, including data, empty, loading, handled-error, table/card, chart-containment, and mobile navigation states.
902
-
903
- ## [0.74.0] - 2026-08-28
904
-
905
- ### Added
906
-
907
- - Added a consent-safe visual event picker to the X-Ray Pixel: an authenticated dashboard user can open an approved website, select a page, button, link, phone link, or form, and return a bounded editable event draft without exposing API keys, form values, or page copy to the website.
908
-
909
- ### Changed
910
-
911
- - Reframed X-Ray setup around the four persisted-evidence milestones required for a first attributed conversion and made recipe customization preserve the currently selected Site.
912
-
913
- ### Fixed
914
-
915
- - Registered the chart component required by X-Ray Summary visual options, preventing a rendered runtime failure during responsive reporting.
916
-
917
- ## [0.73.8] - 2026-08-28
918
-
919
- ### Fixed
920
-
921
- - Aligned the packaged MCP server version and generated public manifests with the 0.73.8 release so npm verification, MCPB metadata, and runtime version reporting cannot inherit the prior release number.
922
-
923
- ## [0.73.7] - 2026-08-28
924
-
925
- ### Added
926
-
927
- - Recorded successful native MCP Scraper login and signup outcomes as consent-governed X-Ray events without sending credentials or contact fields, allowing the subsequent authenticated identity handoff to attach those outcomes to the complete retained journey.
928
-
929
- ## [0.73.6] - 2026-08-28
930
-
931
- ### Fixed
932
-
933
- - Linked retained pixel events and conversions to their sessions through keyed identifiers, restoring enhanced Journey page, event, acquisition, chronology, conversion, and revenue detail after a visitor becomes a known person.
934
-
935
- ## [0.73.5] - 2026-08-28
936
-
937
- ### Fixed
938
-
939
- - Promoted resolved visitor-reference journey details to person presentation, so deterministic identity resolution immediately unlocks the known-person label and authorized masked identity panel across the complete historical journey.
940
-
941
- ## [0.73.4] - 2026-08-28
942
-
943
- ### Fixed
944
-
945
- - Scoped nullable acquisition handling to enhanced Journey session details while preserving the non-nullable session-table contract, restoring the production Web typecheck and deploy.
946
-
947
- ## [0.73.3] - 2026-08-28
948
-
949
- ### Fixed
950
-
951
- - Kept the enhanced Journey drawer render-safe when a session has no measured acquisition source, medium, or campaign, matching the nullable public response contract instead of triggering the page error boundary.
952
-
953
- ## [0.73.2] - 2026-08-28
954
-
955
- ### Fixed
956
-
957
- - Normalized every PostgreSQL-backed Journey timestamp to RFC 3339 at the report boundary, so confirmed totals, enhanced journeys, session chronology, and candidate-review dates satisfy the generated Web contract instead of surfacing a false unavailable state.
958
-
959
- ## [0.73.1] - 2026-08-28
960
-
961
- ### Fixed
962
-
963
- - Applied additive, idempotent X-Ray schema changes as individually committed statements so production reads cannot deadlock against a release-long DDL transaction and an interrupted migration can resume safely.
964
- - Reused the earliest confirmed person when a verified email, phone, account ID, or order identity already belongs to the Site graph, preventing a normalized account ID from splitting a legacy email-keyed journey.
965
-
966
- ## [0.73.0] - 2026-08-27
967
-
968
- ### Added
969
-
970
- - Added a backend-owned, 142-operation analytics REST contract with generated Web validators and exact MCP/SDK projections for enhanced confirmed journeys.
971
- - Added consent-governed identity promotion for verified forms and authenticated accounts, including same-Site anonymous-history backfill, encrypted masked identity profiles, audited single-person reads, and deletion tombstones that prevent silent recreation.
972
- - Added date-bounded Journey reporting for summaries, common pages, events, acquisition and referrers, sessions, and chronology, with confirmed and best-guess totals kept separate.
973
- - Added first-party MCP Scraper subscription revenue outcomes through the ordinary versioned conversion-rule pipeline without copying billing contact data into analytics.
974
- - Added real PostgreSQL integration coverage for tenant isolation, consent withdrawal, deletion, no-resurrection, migration replay, and provider activation eligibility.
975
-
976
- ### Changed
977
-
978
- - Consolidated Scheduler, Web, and Memory source ownership into this product repository under isolated `apps/` project roots while retaining the public SDK as the only separate client repository.
979
- - Aligned the main server with `mcpscraper-memory-tools` 1.16.0 so nested Mastra builds cannot inherit the server's former package versions from the shared repository root.
980
- - Expanded the public MCP catalog to 331 tools, including distinct confirmed/best-guess Journey listing and complete enhanced Journey reads with bounded `from` and `to` windows.
981
- - Browser and embedded-form conversions now preserve the conversion record while allowing provider activation only for a confirmed person with current advertising-measurement consent.
982
-
983
- ### Fixed
984
-
985
- - Kept nested `apps/` source available to Vercel so each consolidated project can build from its configured monorepo root.
986
- - Prevented cross-Site identity, privacy, and Journey references; removed subject-specific export/provider payload remnants on withdrawal or deletion; and normalized unknown/deleted references to zero-discovery responses.
987
- - Normalized PostgreSQL timestamp projections and reconciled consent-withdrawal responses with the strict public REST contract.
988
- - Made consented login and first-party form resolution self-initialize an approved Site-scoped primary identity graph, so older Sites persist stable person references and masked profiles without manual namespace setup.
989
- - Retried the authenticated browser identity handoff during the bounded Pixel/consent bootstrap window, preventing a consent-readiness race from leaving a signed-in visitor anonymous for the rest of the page.
990
-
991
- ## [0.72.7] - 2026-08-27
992
-
993
- ### Fixed
994
-
995
- - Completed Gmail Memory imports now report recovered historical errors as resolved and derive attachment indexing from the verified nested file-asset receipts, keeping counts and sample states consistent with durable Memory state.
996
-
997
- ## [0.72.6] - 2026-08-27
998
-
999
- ### Fixed
1000
-
1001
- - Gmail Memory import cold starts now probe the released import tables before attempting additive schema creation, avoiding production DDL contention before a resumable job can acquire its lease.
1002
-
1003
- ## [0.72.5] - 2026-08-27
1004
-
1005
- ### Fixed
1006
-
1007
- - Gmail Memory imports now provide deterministic descriptions for newly encountered import tags, allowing complete messages, manifests, and attachments to enter the selected vault instead of stopping at the first note write.
1008
-
1009
- ## [0.72.4] - 2026-08-27
1010
-
1011
- ### Fixed
1012
-
1013
- - `gmail_send_message` now uses the same owner-checked, action-gated Gmail REST transport as complete reads and bulk actions, with a durable idempotency receipt, instead of depending on the unavailable generic provider MCP send transport.
1014
-
1015
- ## [0.72.3] - 2026-08-27
1016
-
1017
- ### Fixed
1018
-
1019
- - Production now routes every `/api/gmail/*` workflow request to the API function, making full message reads, attachment retrieval, immutable selections, bulk actions, exports, and Memory imports callable through the hosted MCP instead of returning the frontend 404 page.
1020
-
1021
- ## [0.72.2] - 2026-08-27
1022
-
1023
- ### Fixed
1024
-
1025
- - Connection discovery now returns cached, tenant-owned Nango connection summaries without waiting for every provider's live MCP catalog; explicit describe, test, and call routes still refresh live capabilities at the point of use.
1026
-
1027
- ## [0.72.1] - 2026-08-27
1028
-
1029
- ### Fixed
1030
-
1031
- - The Vercel API migration gate now keeps a cold-start invocation open long enough for additive remote database migrations to finish, preventing the five-second gate from repeatedly freezing a still-pending migration and returning `503` after deployment.
1032
-
1033
- ## [0.72.0] - 2026-08-27
1034
-
1035
- ### Added
1036
-
1037
- - Added ten Gmail workflow tools for complete message and attachment reads, immutable reviewed selections, full-fidelity exports, replay-safe bulk management and deletion, and resumable Memory imports with durable status receipts.
1038
- - Added owner-bound internal artifact resolution so Memory can retain Gmail attachments without exposing provider credentials, storage keys, or attachment bytes to model context.
1039
-
1040
- ### Changed
1041
-
1042
- - Gmail bulk work now freezes an explicit selection before export, mutation, or Memory import, and Scheduler consumes the same signed main-owned canonical export contract.
1043
- - Complete Gmail reads preserve normalized headers, full MIME structure, raw EML artifacts, inline and ordinary attachment provenance, and visibly untrusted provider content.
1044
-
1045
- ### Fixed
1046
-
1047
- - Gmail retries and concurrent resumes now reuse durable selection, action-chunk, export, and import receipts instead of duplicating labels, notes, files, checkpoints, or manifests.
1048
-
1049
- ## [0.71.0] - 2026-08-27
1050
-
1051
- ### Added
1052
-
1053
- - Added portable `harvest_paa_start` and `harvest_paa_status` tools for durable long-running PAA research, with stable idempotency recovery, progress, attempt provenance, completeness, billing state, and bounded provider telemetry.
1054
- - Added progressive PAA checkpoints that preserve and merge the best unique rows across browser retries and stale-job recovery instead of losing already captured questions when a provider session or caller is interrupted.
1055
- - Added exact Option 2 browser-session identity, sanitized Session Logs enrichment, disconnect attribution, bandwidth usage telemetry, and retryable reconciliation without making provider telemetry a prerequisite for result delivery.
1056
-
1057
- ### Changed
1058
-
1059
- - PAA settlement now charges once from the final deduplicated retained rows, including recoverable partial results, while empty interrupted jobs continue to fail and refund.
1060
- - The generated public MCP inventory now reports 320 tools: 219 scraper, browser, workflow, billing, and connected-service tools plus 101 durable-memory tools.
1061
-
1062
- ### Fixed
1063
-
1064
- - PAA quality now marks missing answers or source URLs as partial, preserves safe outbound Google citation targets, and keeps genuine no-PAA SERPs distinct from interrupted empty captures.
1065
- - Runtime-injected Nango action definitions now have a portable unit-test shim, allowing clean npm checkouts to execute the existing CRM integration suites without shipping the Nango CLI as a product dependency.
1066
-
1067
- ## [0.70.0] - 2026-08-27
1068
-
1069
- ### Added
1070
-
1071
- - Added durable scheduled CRM outcome reconciliation and separately controlled outbound Person Summary and Pipeline Event policies, with provisioning, mapping, test, receipt, retry, dead-letter, cancellation, and worker-health evidence.
1072
- - Added MCP operations for CRM outbound policies and receipts, bringing the unified runtime and developer contract to 318 tools with operation-specific schemas.
1073
-
1074
- ### Changed
1075
-
1076
- - Confirmed CRM outcomes now resolve through the exact site, provider, connection, and contact mapping; current consent, GPC, withdrawal, deletion, namespace, and candidate-ineligibility boundaries are revalidated before conversion or activation.
1077
- - Eligible confirmed people retain consented advertising click identifiers from their linked first-party sessions and touches for later CRM-stage conversion activation.
1078
-
1079
- ### Fixed
1080
-
1081
- - The production server now owns its strict normalized CRM outcome projection instead of importing from the independently deployed Nango project, so Vercel can build from its intentionally restricted source context.
1082
- - Meta activation asset discovery now resolves the authorized ad account before listing its datasets, so the dashboard can select an actual connected dataset instead of requiring a copied ID.
1083
- - `analytics_test_activation_destination` now accepts and forwards the provider test code required by Meta/TikTok or the test ID required by Reddit, matching the REST and dashboard contracts.
1084
- - Activation delivery now carries only validated provider-specific destination configuration into each claimed job, including the required Google operating account, while malformed or unapproved fields fail closed.
1085
- - Privacy withdrawal and deletion now use statement-specific PostgreSQL parameters, preventing cleanup from failing on sparse placeholder numbering.
1086
- - Confirmed form identity now links prior same-site anonymous sessions and attribution touches without overwriting an existing person, preserving later CRM attribution and activation eligibility.
1087
-
1088
- ## [0.69.0] - 2026-08-27
1089
-
1090
- ### Added
1091
-
1092
- - Added production reporting for sessions, visitors, confirmed and candidate-assisted journeys, chronological timelines, lead-stage funnels, seven attribution models, ad-spend efficiency, lead scores, and evidence-gated predictions.
1093
- - Added four-purpose consent receipts, GPC and withdrawal enforcement, purpose-specific retention, governed export and deletion, namespace isolation, and audited deterministic promotion of candidate associations.
1094
- - Added guided setup and product-health evidence, configurable fixed or conditional event values, saved report views, privacy-safe support diagnostics, and scale/restore verification tooling.
1095
- - Added documented and tenant-discovered CRM capability profiles for HubSpot, Salesforce, HighLevel, Zoho, Pipedrive, and Keap, including explicit field provisioning, person sync, journey activity, pipeline-event mapping, test writes, and incremental outcome reads where the provider supports them.
1096
- - Added CallRail and Twilio reconciliation actions and expanded the unified public MCP catalog to 315 tools with 40 new production X-Ray operations.
1097
-
1098
- ### Changed
1099
-
1100
- - X-Ray MCP operations now publish operation-specific input and output contracts, bounded redacted results, explicit destructive annotations, and persisted conflicting-idempotency-key rejection.
1101
- - Candidate-assisted evidence remains a separately conserved reporting overlay and cannot activate ads, update CRM records, train predictions, or establish a confirmed identity without deterministic evidence.
1102
- - CRM person sync is contact-only; deals are created or updated only through an approved, versioned pipeline-event mapping.
1103
- - The Pixel now enforces independent site-analytics, enhanced-matching, and advertising-measurement purposes while retaining necessary-only consent receipts and deletion precedence.
1104
-
1105
- ### Fixed
1106
-
1107
- - Activation readiness transitions now cast evidence IDs separately for UUID comparisons and text receipt storage, preventing PostgreSQL from rejecting accepted test and delivery receipts during verification.
1108
- - X-Ray now unwraps typed provider receipts returned through the connected-service MCP envelope, so one accepted Meta test event persists its evidence and verifies the destination instead of remaining configured and unverified.
1109
- - Public catalog mirrors, provider inventories, readiness guards, and release contracts now agree on the 315-tool and 329-action production surfaces.
1110
-
1111
- ## [0.68.0] - 2026-08-26
1112
-
1113
- ### Added
1114
-
1115
- - X-Ray now models explicit sessions, immutable attribution touches, deterministic people, canonical phone and CRM events, versioned conversion rules, signed webhook receipts, and full cross-system customer journeys.
1116
- - Added signed webhook ingestion for CallRail, CallTrackingMetrics, Twilio, HubSpot, and HighLevel, plus durable encrypted CRM import and ad-activation delivery workers with bounded retries and dead-letter evidence.
1117
- - Added X-Ray MCP tools for connection readiness, conversion rules, canonical server events, attribution coverage, and person journeys.
1118
- - Added declarative page, click, phone-link, and same-origin form event definitions that existing Pixel installs load automatically, with matching REST and MCP controls.
1119
- - Added direct activation mapping for Google, Meta, TikTok, and Reddit through verified connected-action tools, with per-conversion idempotency and provider receipt state.
1120
- - Added an end-to-end X-Ray proof harness covering consented Google click attribution, phone and CRM stage events, conversion deduplication, verified activation, scheduled delivery, safe receipts, and journey readback.
1121
-
1122
- ### Changed
1123
-
1124
- - Browser collection now retains consented first-party visitor continuity, explicit 30-minute sessions, first/last/ordered attribution touches, dwell time, scroll depth, expanded native click identifiers, and an explicit identify API without probabilistic fingerprinting.
1125
- - Conversion persistence and eligible activation-job creation now commit atomically; configured-but-unverified destinations cannot receive conversion jobs.
1126
- - Restricted contact and webhook payloads use purpose-bound encryption with scheduled expiry, while deterministic identity joins use keyed HMACs and provider match payloads use normalized hashes.
1127
- - Public MCP catalog mirrors now report the canonical 275-tool inventory generated from the runtime contract.
1128
-
1129
- ### Fixed
1130
-
1131
- - X-Ray Pixel now initializes when frameworks insert its script after hydration and sends credential-free beacons without a browser preflight, restoring collection for Next.js and other dynamically rendered sites.
1132
- - Duplicate conversion submissions now return the persisted conversion ID instead of a newly generated non-existent ID.
1133
-
1134
- ## [0.67.1] - 2026-08-26
1135
-
1136
- ### Fixed
1137
-
1138
- - `commons_host_image` now returns its complete success payload through both readable JSON text and MCP `structuredContent`, so typed clients can consume permanent image provenance without reparsing text.
1139
-
1140
- ## [0.67.0] - 2026-08-26
1141
-
1142
- ### Added
1143
-
1144
- - `commons_host_image` now accepts pasted or AI-generated bytes, owner-scoped image artifacts, direct image URLs, and webpage URLs through one workflow. Webpage inputs try Open Graph, Twitter, JSON-LD, and meaningful content images, return source-selection provenance, and omit temporary URL query credentials from durable image metadata.
1145
- - `mcpscraper.dev` now publishes its complete generated LLM discovery profile and bounded semantic authority-retrieval endpoints from the site-owned Next.js authority layer.
1146
-
1147
- ## [0.66.7] - 2026-08-26
1148
-
1149
- ### Fixed
1150
-
1151
- - Replacing a disconnected integration connection now inherits that same integration's paid entitlement for the rest of the current billing month instead of consuming another 15,000 Credits; one entitlement still covers only one active connection at a time.
1152
- - Transparent Commons validation now distinguishes external featured images from registered Commons-hosted images, guides agents through the host-first workflow, and returns an actionable image error without retaining the write charge when submit-time image hosting fails.
1153
-
1154
- ## [0.66.6] - 2026-08-26
1155
-
1156
- ### Fixed
1157
-
1158
- - Google Search Console bulk URL Inspection now uses one bounded provider batch request, preserves successful URL results beside localized failures, and no longer inherits the former one-minute connected-tool cutoff.
1159
-
1160
- ## [0.66.5] - 2026-08-25
1161
-
1162
- ### Fixed
1163
-
1164
- - Local Sourcebook submissions now distinguish accepted processing from publication, tell MCP clients to keep checking until the run is terminal, and return a plain-language completion message with the exact live listing URL.
1165
-
1166
- ## [0.66.4] - 2026-08-25
1167
-
1168
- ### Added
1169
-
1170
- - Connected-service discovery now returns a tenant-owned `userLabel` plus verified provider account ID, email, name, and identity status so agents can select the intended account when one integration has multiple connections.
1171
- - Managed OAuth connections now retain non-secret provider identity metadata and support owner-scoped account names through the dashboard API.
1172
-
1173
- ### Fixed
1174
-
1175
- - Nango tenant tags are no longer presented as the external provider account, preventing the MCP Scraper login from being mistaken for the Google, Slack, GitHub, Zoom, or other authorized identity.
1176
-
1177
- ## [0.66.3] - 2026-08-25
1178
-
1179
- ### Changed
1180
-
1181
- - Runtime MCP discovery now omits output schemas across hosted OAuth, API-key, npm stdio, and MCPB clients, while the complete generated developer contract continues to supply typed Node and Python SDK outputs.
1182
-
1183
- ### Fixed
1184
-
1185
- - Restored compatibility for strict MCP clients that could connect successfully but silently register zero tools when the complete output-schema catalog was advertised; tool calls retain both readable content and structured results.
1186
-
1187
- ## [0.66.2] - 2026-08-24
1188
-
1189
- ### Changed
1190
-
1191
- - Hosted MCP, npm stdio, and MCPB now advertise every recorded tool output schema from one canonical contract; the former `none`, `essential`, and `all` environment profiles no longer change `tools/list`.
1192
- - Ordinary PAA calls continue to wait directly for their result, while Task-capable hosted clients start the same work immediately and poll its persisted status without routing the run through a scheduler.
1193
- - Direct PAA Tasks now allow three total managed-browser attempts, keeping the first two retryable browser interruptions or verification challenges inside the same Task and billing hold before exposing a terminal failure.
1194
-
1195
- ### Fixed
1196
-
1197
- - Direct PAA Tasks no longer sit in an external event queue before browser work begins; the request runtime starts provider work immediately and uses its existing 800-second execution window.
1198
- - Complete output-schema advertising no longer causes Task-capable tools to be serialized as already-completed calls; hosted Task starts are validated and returned through the Task extension seam before terminal output validation.
1199
- - Replaying an idempotent request returns the existing run and never redispatches it, preserving duplicate-charge protection without turning replay into job recovery.
1200
- - Public npm artifacts no longer embed a developer-machine path for optional site-audit ZIP classification; installs use portable configuration and keep the existing LLM fallback when that dataset is absent.
1201
-
1202
- ## [0.66.1] - 2026-08-24
1203
-
1204
- ### Changed
1205
-
1206
- - Task-capable MCP clients now run long PAA research as a durable job with live, preserved progress instead of tying the work lifecycle to one request window; legacy synchronous callers retain a bounded compatibility wait.
1207
- - The npm install card and MCPB description now share one manually curated current-release message.
1208
- - MCPB releases are now deterministic, self-contained server bundles with enforced archive-size, file-count, source-map, and `node_modules` gates instead of shipping the repository dependency tree; npm publishing also rejects source maps or unexpected dist size and file growth.
1209
-
1210
- ### Fixed
1211
-
1212
- - Replaying a still-running durable PAA request now returns its existing job before concurrency enforcement, avoiding a false capacity error and duplicate charge risk.
1213
- - MCP Task polling now reads both structured MCP output and JSON text envelopes, reports question, row, or city progress, and preserves terminal failure and cancellation states.
1214
- - Client-side timeout errors now say that the caller stopped waiting without claiming that active durable server work was cancelled.
1215
-
1216
- ## [0.66.0] - 2026-08-24
1217
-
1218
- ### Added
1219
-
1220
- - `lead_list_enrich` accepts up to three model-authored `peopleQueryTemplates`, interpolated safely across business rows with explicit maximum-search billing.
1221
-
1222
- ### Fixed
1223
-
1224
- - Owner and leadership enrichment now uses focused role queries, reads AI Overview alongside organic evidence, preserves AI citation provenance, and stops searching once the requested people bound is filled instead of issuing one hard-coded multi-role query.
1225
- - Google harvests now retry closed browser, page, or context sessions with a fresh bounded browser attempt and return the actionable `browser_session_interrupted` code if all attempts fail, instead of a misleading non-retryable generic outage.
1226
- - Disabled internal browser credentials are classified as first-party service failures, while concurrency-limit rejections are recorded with their actual active and entitled slot counts for support diagnosis without retaining the customer's search text.
1227
-
1228
- ## [0.65.1] - 2026-08-24
1229
-
1230
- ### Fixed
1231
-
1232
- - Background site workflows now retain their required `url` in MCP Task start receipts, preventing output-schema validation from rejecting `extract_site`, `analyze_site_similarity`, or `audit_site` before the caller receives its durable task handle.
1233
-
1234
- ## [0.65.0] - 2026-08-24
1235
-
1236
- ### Added
1237
-
1238
- - Added `analyze_site_similarity`, a durable owner-scoped MCP workflow that JavaScript-renders up to 500 live pages, removes repeated template blocks from embedding input, computes dedicated raw-cosine page-pair scores and threshold clusters, and delivers rendered-page evidence plus CSV/JSONL results with corpus and model provenance.
1239
-
1240
- ### Fixed
1241
-
1242
- - Sitemap discovery now expands CDATA-wrapped `<loc>` values emitted by common WordPress sitemap generators, preventing similarity crawls from silently collapsing to the start page.
1243
-
1244
- ## [0.64.1] - 2026-08-24
1245
-
1246
- ### Fixed
1247
-
1248
- - Aligned the `lead_list_import` structured output schema with its mapping suggestions so live CSV, TSV, rows, and XLSX imports can return each suggestion's acceptance decision without failing MCP output validation.
1249
-
1250
- ## [0.64.0] - 2026-08-24
1251
-
1252
- ### Added
1253
-
1254
- - Added owner-scoped lead-list upload, free CSV/TSV/XLSX import inspection, and durable supplied-list enrichment with replay-safe billing, row checkpoints, cooperative cancellation, explicit identity/contact provenance, and seven-day CSV/XLSX results across coding and chat MCP clients.
1255
- - Added opt-in exact-domain email recovery from bounded search-result snippets after selected first-party pages remain email-empty, with primary and secondary email columns, source provenance, and successful-search settlement.
1256
- - Added opt-in owner and leadership discovery to `lead_list_enrich`, returning bounded role evidence and company-matched LinkedIn profile candidates without opening LinkedIn pages or treating indexed snippets as verified employment.
1257
-
1258
- ### Fixed
1259
-
1260
- - Page extraction now accepts content-rich pages that merely load background challenge scripts and exits the existing bounded browser wait as soon as delayed page content becomes usable, while true interstitials remain challenged.
1261
-
1262
- ## [0.63.2] - 2026-08-24
1263
-
1264
- ### Fixed
1265
-
1266
- - Kept base-plan, bundled and standalone Memory, and concurrency-pack entitlements active while Stripe retries a `past_due` renewal, while terminal subscription states still remove access.
1267
- - Reused an existing active, trialing, or past-due base subscription during plan changes instead of risking a duplicate subscription when the local subscription reference is missing.
1268
- - Replaced unavailable credit-top-up guidance with the supported larger-plan path and a terminal upgrade command that lists only publicly purchasable tiers.
1269
-
1270
- ## [0.63.1] - 2026-08-23
1271
-
1272
- ### Fixed
1273
-
1274
- - Preserved non-enumerable acquired HTML and main-content HTML when the background Inngest worker adds sitemap and Wayback provenance, so every newly completed durable export can serve the HTML representation promised by its request.
1275
- - Requests for a representation absent from an older export now return the non-retryable `site_export_format_unavailable` contract with manifest guidance instead of a retryable 500 `site_export_read_failed` response.
1276
- - Made the preferred `preserveMedia` option force durable background extraction just like its deprecated `downloadImages` alias, including for small crawls.
1277
-
1278
- ## [0.63.0] - 2026-08-23
1279
-
1280
- ### Added
1281
-
1282
- - Added owner-scoped durable site-export storage and direct REST/MCP readers for complete per-page JSON, acquired HTML, Markdown, and preserved images, alongside a reconstructable ZIP with checksums and provenance manifests.
1283
- - Added `site_export_read` and `site_export_image`, bringing the unified MCP surface to 254 tools and giving text-only and multimodal AI clients bounded, resumable access to bulk extraction results.
1284
- - Added structured component warnings when optional rendering, screenshot, branding, or media packaging fails after static page extraction succeeds.
1285
-
1286
- ### Changed
1287
-
1288
- - Replaced hand-rolled HTML parsing in page, site, and media extraction with one Cheerio/parse5 document parser and removed the 40,000-character Markdown truncation.
1289
- - Site exports now persist large HTML and Markdown bodies as compressed, checksummed owner-scoped chunks instead of placing them in job metadata, while progress distinguishes discovered, attempted, successful, failed, and remaining pages.
1290
- - Full-page screenshots use a bounded lazy-load sweep followed by Playwright's native full-page capture.
1291
-
1292
- ### Fixed
1293
-
1294
- - Preserved reviewed public timeout, page, browser, rate-limit, and export error envelopes across REST, jobs, MCP, and reconciliation paths instead of collapsing them to `service_unavailable`; raw vendor, billing, filesystem, and internal diagnostic details remain private.
1295
- - Job and site-export settlement now reports `refund_pending` until a failed-call refund actually succeeds, then records `refunded`, avoiding false billing assurances during reconciliation.
1296
-
1297
- ## [0.60.0] - 2026-08-17
1298
-
1299
- ### Added
1300
-
1301
- - Transparent Commons has its own semantic search. `commons_index_documents` had carried `embedding_status`, `vector_ref` and provider columns since launch with 231 documents queued and none ever embedded. An embedding worker now drains that queue on every cron tick, using the same Jina model Memory uses, into a platform-scoped `commons_index_vectors` table in the shared Postgres. Nothing about it touches a personal Memory vault: the corpus is public and account-independent.
1302
- - `commons_search_entities` gained `mode`: `hybrid` (default) fuses semantic candidates with exact term matching and ranks title-first, `lexical` matches terms only, `semantic` ignores term matching. Semantic candidates enter the result set rather than only re-ranking lexical hits, so a query with no shared vocabulary still finds the right entity — "tools that let an AI assistant browse the web" returns Web scraping, Model Context Protocol and AI agent, where lexical returns nothing.
1303
- - `POST /commons/index/embed` and `GET /commons/index/status` for operating the index directly.
1304
-
1305
- ## [0.59.0] - 2026-08-17
1306
-
1307
- ### Added
1308
-
1309
- - Every published editorial article now has its own URL. `GET /commons/publications/{subdomain}/articles/{articleSlug}/site` server-renders a standalone article page with its own canonical, Open Graph tags, and `Article` JSON-LD that declares the edition as its `CollectionPage`. An edition-scoped form is available at `/editions/{editionSlug}/articles/{articleSlug}/site`.
1310
-
1311
- ### Changed
1312
-
1313
- - The reading-room app reads and writes real article paths instead of an `?article=` query parameter, so an article is shareable, crawlable, and independently canonical. Legacy `?article=` links still resolve.
1314
-
1315
- ## [0.58.0] - 2026-08-17
1316
-
1317
- ### Added
1318
-
1319
- - `commons_update_editorial_article` replaces the Markdown of one article in a published edition without resupplying the others. Every edition already stored each article's source; the edit reads them, swaps the named article, re-renders, and publishes the next revision with the rest byte-identical. Guarded by `baseRevision` and `idempotencyKey`.
1320
- - `commons_get_publication` accepts `includeArticles` to return stored article sources and slugs. Owner-only and off by default: reading a publication by name never returns sources, and the payload is large.
1321
-
1322
- ### Fixed
1323
-
1324
- - Published editions never returned their article sources. `articles_json` was written on every publish and omitted from the edition mapper, so no API response carried it — which made a single-article edit look impossible and forced a full 100-article resubmission to change one paragraph.
1325
-
1326
- ## [0.57.3] - 2026-08-16
1327
-
1328
- ### Fixed
1329
-
1330
- - Local Sourcebook exact-place matching no longer rejects a Google listing that appends a service tagline to the business name. `nameOverlap` divided the intersection by the larger token set, so "Meljestic Spa" against "Meljestic Spa: Laser hair removal and Skincare" scored 0.33 against a 0.6 threshold and could never publish — even though the submitted name is fully contained in the Google name and Maps linked the same domain. Identity now also accepts containment of the smaller token set (which must carry two distinctive tokens) or a Maps listing that links the submitted domain. Wrong domain, wrong state, missing address, and single-generic-token still reject.
1331
- - `acquisition_error` is now returned as `acquisitionError` on the submission. It was written on every failure and never selected back, so no response explained why a listing failed.
1332
- - `local_sourcebook_submission_status` and `local_sourcebook_refresh` now state what a failed status means, that coverage counters are only written on success (so zeroed counters do not mean the crawl never ran), and that a replayed refresh still re-runs acquisition.
1333
-
1334
- ## [0.57.2] - 2026-08-16
1335
-
1336
- ### Fixed
1337
-
1338
- - Blob storage no longer falls back to the local filesystem on a serverless deployment. `BLOB_READ_WRITE_TOKEN` was empty in production, so `getBlobStore()` returned a local store and every write through it — the scrape-vault fallback document and Instagram media downloads — was saved to an ephemeral path inside the function and handed back as a `file://` URL no request could read. Without a token a serverless deployment now returns a store that refuses to write and says why.
1339
-
1340
- ## [0.57.1] - 2026-08-16
1341
-
1342
- ### Fixed
1343
-
1344
- - Commons image hosting resolves the dedicated public store token and refuses to store anything unless the resolved store is Vercel Blob. `BLOB_READ_WRITE_TOKEN` is empty in production, so the previous release would have written a `file://` path into a public wiki entity instead of failing; hosting now fails loudly with `image_storage_unconfigured`.
1345
-
1346
- ### Added
1347
-
1348
- - `scripts/backfill-commons-images.ts` hosts the still-reachable featured images and article media on Commons storage, rewrites the entity, and records a contribution-ledger entry per rewrite. Dry run by default; `--apply` to write. Run against production: 15 featured images and 20 media sets moved onto Commons hosting; 26 sources were already dead 404s and one SVG is rejected by policy.
1349
-
1350
- ## [0.57.0] - 2026-08-16
1351
-
1352
- ### Fixed
1353
-
1354
- - Transparent Commons now hosts its own images. Entities stored whatever third-party URL an author supplied and the public wiki hotlinked it, so 26 of 41 live pages had a broken featured image once the source site rotated its uploads. `commons_submit_entity` downloads external images, validates them, stores them permanently, and rewrites the entity to the hosted copy, so a foreign image URL can no longer be persisted.
1355
- - Commons search no longer matches a term inside an unrelated word or ranks purely by recency. Searching `CIA` returned eight physical-therapy pages — matching inside `fascia`, `myofascial`, and `special` — while missing the article with CIA in its title. Terms now match on word boundaries and results are scored title > tags/keywords > description > governed claims > body before the recency tiebreak.
1356
- - See Also concepts resolve to pages whose slug was shortened by hand, not only to pages whose slug matches their title.
1357
-
1358
- ### Added
1359
-
1360
- - `commons_host_image` hosts an image from a public https URL or base64 bytes and returns the permanent Commons URL. JPEG, PNG, GIF, and WebP up to 10 MB; SVG is rejected because the wiki serves images to the public web. Identical bytes are stored once and reused. URL fetches enforce https, reject private, loopback, link-local, and carrier-grade NAT addresses, cap redirects, and verify the real bytes rather than the declared content type.
1361
-
1362
- ## [0.56.1] - 2026-08-16
1363
-
1364
- ### Fixed
1365
-
1366
- - See Also concepts now link to pages written after the mention. A related link stored with `needsLink: true` is resolved against published entities by normalized title on every read, so `commons_get_entity`, `commons_search_entities`, and the public `/wiki/` projection return a real slug instead of an unresolved concept. 37 dangling mentions across 16 concepts linked immediately, and `commons_list_needs_links` now reports only concepts that genuinely have no page.
1367
-
1368
- ## [0.56.0] - 2026-08-16
1369
-
1370
- ### Fixed
1371
-
1372
- - 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.
1373
- - 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.
1374
- - `commons_submit_entity`, the validation warnings, the entity profile contract, and the server instructions no longer describe the removed block-on-conflict behavior.
1375
-
1376
- ### Added
1377
-
1378
- - `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.
1379
-
1380
- ## [0.55.0] - 2026-08-14
1381
-
1382
- ### Added
1383
-
1384
- - Added a generated public product contract for tool counts, subscription entitlements, add-on pricing, and rate-policy versions, with contract checks that keep server, documentation, and SDK projections aligned.
1385
- - Added a repeatable, secret-free 30-day SERP/PAA rate-basis report that records workload and provider-cost provenance, exposes evidence limitations, and verifies the current 60-Credit SERP and 400-plus-10-per-question PAA schedule against the 2.5x Scale-plan value floor.
1386
-
1387
- ### Changed
1388
-
1389
- - Parallel capacity is now sold in quantity-based $5/month packs that add 2 browsers each on any plan. Existing add-on subscriptions safely map to one pack when their quantity is absent, and operators can dry-run a customer-, subscription-, and price-validated reconciliation before applying corrections.
1390
- - Capacity-pack checkout and invoices now state the two-browser benefit, $5 monthly cadence, and cancellation terms; each successful payment triggers an emailed Stripe receipt.
1391
- - Connected-account contracts now describe the public credential transport as `managed_oauth` instead of exposing a replaceable implementation vendor.
1392
-
1393
- ### Fixed
1394
-
1395
- - REST and MCP failures now preserve actionable, vendor-neutral error codes, types, retry guidance, charge status, and safe account details. CAPTCHA responses explain temporary challenge pressure, while concurrency limits identify the active limit and capacity-upgrade path instead of collapsing to generic service unavailability.
1396
- - Corrected MCP pricing descriptions and structured schemas so SERP Intelligence, Credit information, concurrency-pack quantities, and connected-account usage rates match the generated public rate contract.
1397
- - Capacity-pack cancellation now verifies both customer ownership and the pack price before ending the add-on, so independent Sonic subscriptions remain untouched.
1398
-
1399
- ## [0.54.4] - 2026-08-14
1400
-
1401
- ### Fixed
1402
-
1403
- - Reddit Google discovery now retries one fresh managed SERP session when the first page is unexpectedly empty or fails, before entering the slower Reddit-browser fallback. Successful discovery still uses one Google search.
1404
-
1405
- ## [0.54.3] - 2026-08-14
1406
-
1407
- ### Fixed
1408
-
1409
- - Reddit Google discovery now keeps its first-page managed SERP result instead of risking the entire discovery on a second-page navigation. The SERP-only route uses one attempt and an explicit one-question no-op bound, removing the inherited `maxQuestions: 100` diagnostic while preserving the original query and 30-day filter.
1410
-
1411
- ## [0.54.2] - 2026-08-14
1412
-
1413
- ### Changed
1414
-
1415
- - Reddit topic discovery now uses managed Google `site:reddit.com` search with week, 30-day, and all-time filters. Discovered links open on normal Reddit through the browser's untouched default stealth configuration, wait through automatic challenges for up to 300 seconds, and use old Reddit only as a fallback; direct fallback discovery likewise tries the normal Reddit search bar first.
1416
-
1417
- ## [0.54.1] - 2026-08-13
1418
-
1419
- ### Fixed
1420
-
1421
- - Editorial Reading Room artifacts now load inside privacy-preserving sandboxed previews when browser storage is unavailable, while retaining saved reading preferences wherever storage is permitted.
1422
-
1423
- ## [0.54.0] - 2026-08-13
1424
-
1425
- ### Added
1426
-
1427
- - Added `personal_authority_v2`, a separately versioned personal-site renderer with bounded palettes, accessible hexadecimal brand-color overrides, selectable self-contained typography, a public preview, and a machine-readable example.
1428
- - Added `blog_article_v1`, a long-form editorial renderer with sidebar media, expandable disclosure and FAQ sections, a sticky scroll-aware table of contents, sharing and citation tools, author attribution, public previews, and reusable Tailwind v4 source assets.
1429
-
1430
- ### Changed
1431
-
1432
- - Expanded scheduled artifact persistence, public view links, examples, and renderer dispatch to the complete five-template catalog while preserving the existing renderer families.
1433
-
1434
- ## [0.53.1] - 2026-08-12
1435
-
1436
- ### Changed
1437
-
1438
- - Repriced Google SERP lookups to 60 credits per search and original-query PAA harvests to a 400-credit base plus 10 credits per returned question. Same-page SERP feature flags are included, failed work remains refundable, and unused PAA question estimates settle down to actual output.
1439
- - A managed Browser API is now the preferred production transport for stateless Google SERP and original-query PAA harvests when configured. Existing persistent `serpIdentity` profiles continue to use their fixed browser identity.
1440
- - `search_serp` now defaults to organic results plus Google entity IDs, while `harvest_paa` adds continually expanded original-query questions, answers, and source titles and URLs. Local pack, forums, videos, AI surfaces, and What People Are Saying are opt-in through individual flags or `includeAllSerpFeatures`.
1441
- - Removed Google's `num=100` parameter and tuned PAA expansion to inspect only the newly clicked row at a measured 700 ms interaction cadence with bounded recovery. Loaded answers and sources are retained even when Google collapses an accordion.
1442
- - Routed durable PAA work through the long-running scrape function and expanded its timeout budget for verified browser-driven click expansion without losing billing settlement or job completion.
1443
-
1444
- ### Fixed
1445
-
1446
- - Corrected the AI-visible `search_serp` and `harvest_paa` contracts to disclose their canonical Credit rates and refund behavior, documented every public input field including nested objects and union branches, clarified persisted Memory vault selection, and upgraded release verification from tool-name parity to semantic schema and metadata parity.
1447
-
1448
- ## [0.53.0] - 2026-08-11
1449
-
1450
- ### Added
1451
-
1452
- - Added account-scoped persistent SERP identities that bind saved browser cookies and storage to one reusable static ISP network address. Creation immediately opens `google.com` and returns a takeover URL so the user can clear consent or CAPTCHA before closing and saving the profile; the identity can then be selected with `serpIdentity` on `search_serp` or `harvest_paa`. Existing stateless search behavior remains the default.
1453
-
1454
- ## [0.52.4] - 2026-08-11
1455
-
1456
- ### Changed
1457
-
1458
- - `location` now sets the Google UULE parameter and nothing else on `search_serp`, `harvest_paa`, and `capture_serp_snapshot`. The server sends your query to Google exactly as written and no longer appends the location to the search text, so a caller who phrases a query one way is never silently searched a different way. Tool descriptions were rewritten to match: put the place in `query` when it should appear in the search terms.
1459
- - Google Maps still carries location in its search text because Maps sends no UULE, but `maps_search` no longer repeats a place the query already names.
1460
-
1461
- ### Fixed
1462
-
1463
- - Google location targeting now resolves against the official Google Ads geotargets list (21,693 US places and 219 countries) instead of 62 hand-written cities. Every US state, and cities outside that shortlist, previously produced a well-formed UULE wrapping a name Google does not recognize — a silent mis-targeting for most locations. `New York` also returned New York City for a state-level request.
1464
- - Unresolved and ambiguous locations are now reported in `debug` output as `locationResolved`, `locationMatchSource`, and `locationAmbiguousCandidates` rather than failing silently.
1465
-
1466
- ## [0.52.3] - 2026-08-11
1467
-
1468
- ### Fixed
1469
-
1470
- - Removed a remaining anti-bot infrastructure brand from the browser screenshot contract and added it to the generated public-surface policy so hosted and stdio discovery cannot regress.
1471
-
1472
- ## [0.52.2] - 2026-08-11
1473
-
1474
- ### Changed
1475
-
1476
- - Published the changelog with the npm artifact, added canonical repository and support links, and pinned `mcpscraper-memory-tools` 1.14.2 so package consumers can inspect the complete release history without changing the 246-tool MCP contract from 0.52.1.
1477
-
1478
- ### Fixed
1479
-
1480
- - Restored missing comparison links across the published release history, including the RAG-first 0.52.1 contract.
1481
-
1482
- ## [0.52.1] - 2026-08-10
1483
-
1484
- ### Changed
1485
-
1486
- - Memory discovery now routes through hybrid Smart RAG before vault or note inventories, with the retrieval-versus-inventory boundary repeated in each relevant tool description so clients that skip server discovery still choose correctly.
1487
-
1488
- ### Fixed
1489
-
1490
- - Removed replaceable infrastructure vendor names from MCP server instructions and tool descriptions, and added a generated-contract lint that prevents those names from returning in hosted or stdio discovery surfaces.
1491
-
1492
- ## [0.52.0] - 2026-08-10
1493
-
1494
- ### Added
1495
-
1496
- - Added opt-in Google Maps listing-photo collection to `maps_place_intel`, including owner/all scope, bounded gallery traversal, evidence-labeled ownership, direct AI image blocks, and owner-scoped ZIP manifests readable through `archive_read`.
1497
- - Added opt-in static-plus-rendered website media preservation to `extract_url`, including lazy and responsive discovery, variant collapse, completion evidence, bounded AI image blocks, and owner-scoped ZIP manifests.
1498
-
1499
- ### Changed
1500
-
1501
- - Website branding now ranks JSON-LD and rendered site-identity evidence for logos, keeps only same-family logo variants, and reports certifications, accreditations, awards, memberships, partner/customer marks, press mentions, and trust marks separately as evidence-bounded proof images.
1502
- - Site extraction now excludes non-page URLs and non-HTML responses from browser fallback, identifies WordPress attachment pages, and requires meaningful main text before treating a document as a text page.
1503
-
1504
- ### Fixed
1505
-
1506
- - Prevented HTTP 403/429 and Cloudflare-style challenge interstitials from being returned as page content; browser fallback now escalates once from stealth headless to a bounded stealth headful attempt and reports unresolved challenges explicitly.
1507
- - Made rendered brand-color extraction framework-agnostic across utility CSS and CMS output by normalizing modern CSS color functions, rejecting transparent values and challenge pages, ranking visible semantic CTAs and explicit brand variables, and returning provenance for every selected color.
1508
-
1509
- ## [0.51.2] - 2026-08-09
1510
-
1511
- ### Added
1512
-
1513
- - Added explicit account-wide `memory-list({ allVaults: true })` inventory with aggregate note and folder totals plus complete per-vault metadata groups, while preserving the existing single-vault default.
1514
-
1515
- ### Fixed
1516
-
1517
- - Prevented exhaustive Memory requests and release proofs from presenting the default logical-vault count as the complete account total; account-wide vault reads run sequentially to avoid the database contention reproduced by parallel fan-out.
1518
-
1519
- ## [0.51.1] - 2026-08-09
1520
-
1521
- ### Fixed
1522
-
1523
- - Ensured the hosted in-process `memory-list` path returns the complete derived `folders` inventory promised by the public tool contract, matching the HTTP fallback and npm-installed MCP behavior.
1524
-
1525
- ## [0.51.0] - 2026-08-09
1526
-
1527
- ### Changed
1528
-
1529
- - Clarified the Memory MCP contract so agents distinguish exhaustive vault inventory, ranked recall, exact note reads, and full exports; made `memory-list` return the complete derived folder inventory; and required read-merge-write edits with `baseRevision` instead of mistaking `memory-put` for a partial text patch.
1530
- - Expanded editorial reading rooms and Commons editorial editions from 40 to 100 articles, with structured article/card images, Markdown body images, collection and article Open Graph images, required alt text, visible image provenance fields, and responsive rendering.
1531
-
1532
- ### Fixed
1533
-
1534
- - Made `reddit_trending` fall back to a bounded direct Reddit search when Google discovery is empty or unavailable, preserve the requested recency window, and return explicit degraded/retry/refund signals instead of collapsing an empty upstream SERP into a generic `service_unavailable` error.
1535
-
1536
- ## [0.50.0] - 2026-08-07
1537
-
1538
- ### Added
1539
-
1540
- - Added attention measurement to the X-Ray Pixel: a `page_engagement` beacon that accumulates only visible time, flushes on `visibilitychange` and `pagehide`, re-attributes dwell to the outgoing path on single-page-app navigation, and reports capped engaged milliseconds with maximum scroll depth.
1541
- - Added average time on page, bounce rate, exit rate, engagement rate, average scroll depth, views per session, and measured-pageview coverage to the content report, its exports, and the `analytics_get_content` MCP tool.
1542
- - Added server-side column sorting and path search to the content report so ordering spans the whole result set rather than the current page.
1543
-
1544
- ### Fixed
1545
-
1546
- - Markdown exports no longer discard every row; content, acquisition, and conversion reports now render their rows as a table beneath the summary instead of ending after the site totals.
1547
- - The content report's engagement-event count no longer counts the new engagement beacon as a visitor interaction.
1548
-
1549
- ## [0.49.0] - 2026-08-05
1550
-
1551
- ### Added
1552
-
1553
- - Added governed Transparent Commons relationship claims with TPW-S identifiers, evidence and dispute metadata, deterministic RFC 9264 JSON linksets, HTTP discovery and policy profiles, and the read-only `commons_get_entity_linkset` MCP tool.
1554
-
1555
- ## [0.48.0] - 2026-08-05
1556
-
1557
- ### Added
1558
-
1559
- - Added Thorbit-owned X-Ray site analytics with separate site pixels, exact-path event capture, detected-domain approval, form-to-contact attribution, customer-journey reporting, campaign links, governed exports, forecasts, and responsive line, bar, donut, heatmap, United States choropleth, and Sankey visualizations.
1560
- - Added 24 MCP analytics tools so agents can manage pixels, read and filter reports, inspect identity and conversion journeys, create tracked campaign links, export governed data, and schedule reports through the released MCP surface.
1561
- - Added the Thorbit entitlement bridge with a 30-day trial, qualifying-subscription checks, API-key recovery flow, and fail-closed production enforcement without consuming MCP Scraper Credits.
1562
- - Added the registered News Publisher website renderer with alternating panorama, mosaic, and tile desks; a complete article-page preview with editor picks and inline related-story modules; a responsive discussion drawer; provenance-validated reader, editorial, and MCP Scraper prompt identities; primary publication routes; a separate press room; an accountable editor; ten required trust pages; and secure scheduled-result view-link support.
1563
- - Added `get_artifact_template_example` so agents can inspect each registered preset's safe defaults, authoring guidance, structured example input, machine-readable JSON, and public visual preview pages without depending on the Templates dashboard.
1564
-
1565
- ### Changed
1566
-
1567
- - Expanded the unified MCP catalog from 220 to 245 tools and added X-Ray workflow guidance to the server instructions.
1568
- - Turned `list_artifact_templates` into case-insensitive template search with renderer-family filtering, presented template creation as Save Template, and explicitly routed reusable-site work away from the one-off Editorial Reading Room renderer.
1569
-
1570
- ### Fixed
1571
-
1572
- - Kept the article’s inline related-story module inside the article column and made every promoted-story tile equal-sized at desktop and mobile breakpoints without unpinning the desktop Editor’s Picks rail.
1573
- - Routed Personal Authority and Editorial Reading Room preview images and interactive demos through `mcpscraper.dev` so the Templates catalog no longer requests missing assets from the public-domain gateway.
1574
-
1575
- ## [0.47.0] - 2026-08-05
1576
-
1577
- ### Added
1578
-
1579
- - Added the registered Personal Authority renderer for responsive individual professional sites, with initials-based image placeholders and configurable navigation, social, authority, consultation, learning, services, proof, and closing-call-to-action sections.
1580
-
1581
- ### Changed
1582
-
1583
- - Generalized saved artifact-template contracts and MCP tool descriptions so registered renderer families can expose their own validated inputs and configuration without granting callers arbitrary HTML, CSS, JavaScript, identity, storage, or publishing authority.
1584
- - Expanded scheduled-result artifact and public view-link contracts to support Personal Authority output while preserving existing Editorial Reading Room records during the SQLite constraint migration.
1585
- - Requires `mcpscraper-memory-tools` 1.14.0 so hosted MCP clients expose the same registered template catalog as Memory.
1586
-
1587
- ## [0.46.0] - 2026-08-04
1588
-
1589
- ### Added
1590
-
1591
- - Added one owner-scoped Transparent Commons editorial publication per subscriber, with a globally unique chosen subdomain, prepare-and-validate contracts, idempotent claiming and publishing, immutable edition revisions, and permanent publication, archive, and edition URLs.
1592
-
1593
- ## [0.45.0] - 2026-08-04
1594
-
1595
- ### Added
1596
-
1597
- - Let Local Sourcebook callers select a governed Schema.org `LocalBusiness` subtype during preparation, then compile evidence-backed business, service, area, image, rating, FAQ, and breadcrumb JSON-LD for the published profile without accepting arbitrary caller-authored schema.
1598
-
1599
- ### Changed
1600
-
1601
- - Charge a predictable 10 Credits to create and 2 Credits to revise either a Local Sourcebook directory listing or Transparent Commons wiki entity, with preparation and validation free, idempotent retries protected, and Sourcebook evidence acquisition included in the fixed price.
1602
-
1603
- ## [0.44.4] - 2026-08-04
1604
-
1605
- ### Fixed
1606
-
1607
- - Return `home-services.localsourcebook.com` as the canonical public hostname for home-service listings instead of exposing the internal `home` category key in customer-facing URLs.
1608
- - Re-project canonical URLs when reading existing published revisions so older listings adopt the corrected hostname without a recrawl.
1609
-
1610
- ## [0.44.3] - 2026-08-04
1611
-
1612
- ### Fixed
1613
-
1614
- - Return the exact canonical `localsourcebook.com` profile, reviews, state, and nationwide directory URLs from Local Sourcebook preparation, capture, owner-status, and refresh results.
1615
- - Add nationwide and category-wide published-listing reads so the directory can expose every state rather than depending on a hard-coded preview market.
1616
- - Direct MCP clients to give users the clickable Local Sourcebook profile URL whenever reporting that a listing is live.
1617
-
1618
- ## [0.44.2] - 2026-08-04
1619
-
1620
- ### Changed
1621
-
1622
- - Automatically publish each successful Local Sourcebook acquisition as the exact immutable revision compiled from MCP Scraper evidence, including bounded or source-limited results with transparent collection receipts.
1623
- - Retired owner-authored listing replacement payloads from the public API and MCP contract; subscribers now submit business identity and tags, then request evidence reacquisition when public facts need to change.
1624
- - Keep administrator rejection and unpublishing as exception controls while preventing moderated records from being republished through an owner refresh.
1625
-
1626
- ## [0.44.1] - 2026-08-04
1627
-
1628
- ### Fixed
1629
-
1630
- - Routed the Local Sourcebook owner, public reader, and Transparent Commons paths to the production API function so the released MCP tools and public reads reach their mounted server handlers.
1631
-
1632
- ## [0.44.0] - 2026-08-04
1633
-
1634
- ### Added
1635
-
1636
- - Added the subscriber-owned Local Sourcebook listing surface: MCP tools and authenticated API routes create, inspect, revise, and refresh submissions, while immutable revisions and an admin-only publication boundary prevent one subscriber from editing another subscriber's record.
1637
- - Added category-and-state public listing reads plus explicit acquisition receipts for broad site coverage, genuine images, and source-bounded review capture without claiming completeness beyond what each source exposed.
1638
- - Expanded Local Sourcebook acquisition plans to inspect team and staff pages so genuine staff photography can populate profiles when the business publishes it.
1639
- - Added a governed Local Sourcebook write sequence modeled on MCP Memory: callers inspect the contract and canonical tags, prepare and validate a proposed listing, then capture an owner-scoped draft with idempotency and revision protection.
1640
- - Added the durable paid acquisition worker that crawls up to 100 business pages, validates the exact Google Maps identity, requests up to 500 complete reviews, retains genuine media and staff candidates, compiles services and service areas, and records explicit partial-data and billing receipts before admin review.
1641
- - Added Transparent Commons as a governed public knowledge graph with nine MCP tools for entity search, Wikipedia-style reads, adaptive prepare-and-validate contracts, idempotent proposal writes, contribution ledgers, unresolved See Also discovery, and account-scoped saved filters.
1642
- - Added platform-owned Commons indexing across article bodies, evidence, media, related entities, tags, keywords, and JSON-LD while keeping personal Memory and reader state outside the public graph.
1643
-
1644
- ### Fixed
1645
-
1646
- - Kept the last approved listing revision public while an owner refresh is queued or under review, and aligned the Local Sourcebook reader API response shape with the frontend contract.
1647
- - Prevented preferred media-preservation options from conflicting with deprecated aliases injected by MCP schema defaults before a hosted crawl could start.
1648
-
1649
- ## [0.43.6] - 2026-08-04
1650
-
1651
- ### Fixed
1652
-
1653
- - Connected-service and Search Console JSONL exports now return exact MCP-native readback instructions, allowing hosted and npm-installed agents to consume private artifacts through the authenticated `report_artifact_read` tool when their sandbox cannot reach the optional signed download URL.
1654
-
1655
- ### Changed
1656
-
1657
- - Direct site crawls now identify as MCP Scraper instead of using a legacy sibling-product crawler name, while standalone media downloads no longer declare a crawler identity. Browser-backed tools continue to inherit the running browser's native user agent.
1658
-
1659
- ## [0.43.5] - 2026-08-04
1660
-
1661
- ### Fixed
1662
-
1663
- - Restored Claude Web OAuth initiation by keeping static discovery documents outside the database migration gate, reducing ordinary serverless cold starts to one schema-receipt lookup, and returning bounded retryable authorization errors instead of leaving clients hanging.
1664
- - Moved the completed site-extraction counter repair out of request startup and into an explicit, versioned release migration so historical data remains repairable without repeating a global write on every new runtime instance.
1665
-
1666
- ## [0.43.4] - 2026-08-03
1667
-
1668
- ### Added
1669
-
1670
- - Added the project-scoped blog-post worker so the repository-owned content pipeline can delegate research, framing, writing, and assembly tasks through its bundled Codex skill and runtime tooling.
1671
-
1672
- ### Fixed
1673
-
1674
- - Browser-backed tools now inherit the running browser's current user agent instead of injecting pinned Chrome or Safari identities; same-session media downloads reuse that detected identity, while unrelated HTTP downloads no longer impersonate a stale browser.
1675
- - Hosted SERP and PAA harvests remain headful while an internal two-key canary can exercise the same harvest path headlessly; the former request-header override no longer lets live callers select the experimental mode.
1676
-
1677
- ## [0.43.3] - 2026-08-03
1678
-
1679
- ### Fixed
1680
-
1681
- - Synchronized the public Markdown and AI-readable pricing copy with the canonical 14-credit headful `search_serp` runtime rate, while keeping `capture_serp_snapshot` documented as a 14-credit hold that settles to 4 credits when its capture is proven headless.
1682
-
1683
- ## [0.43.2] - 2026-08-03
1684
-
1685
- ### Changed
1686
-
1687
- - Kept proxy selection and ZIP routing inside the scraper runtime instead of exposing provider controls in the public MCP schemas; the reliable direct-egress retry behavior remains unchanged.
1688
- - Updated the embedded Memory tool surface to `mcpscraper-memory-tools` 1.13.3 so valid tiny images receive embeddable sanitized previews.
1689
-
1690
- ## [0.43.1] - 2026-08-03
1691
-
1692
- ### Fixed
1693
-
1694
- - Rebuilt the Claude Desktop MCPB after final dependency resolution and restored exact package, bundle, checksum, and README release parity. The `0.43.0` npm candidate was not published.
1695
-
1696
- ## [0.43.0] - 2026-08-03
1697
-
1698
- ### Added
1699
-
1700
- - Adopted the official MCP v2 runtime across HTTP and stdio, including MCP Tasks for resumable work, elicitation-based recovery, cache metadata, array-root output schemas, and typed structured results.
1701
- - Added deployment-aware artifact delivery so large scrape outputs can be returned inline, saved to hosted Memory, or emitted as AI-readable local files and archives when running through local stdio.
1702
- - Added governed image handoff into hosted Memory, including artifact-backed image sources and explicit image preservation controls for scrape workflows.
1703
- - Added measurable catalog modes, deterministic tool ordering, capability-family discovery, and release gates for catalog size, descriptions, schemas, annotations, and server instructions.
1704
-
1705
- ### Changed
1706
-
1707
- - Updated the Google scraper transport to use a current browser identity, disable the harmful stealth path, and remove residential and ISP retry branches that reduced successful captures.
1708
- - Connected hosted actions now enforce owner-scoped authorization and replay-safe idempotency while local-only filesystem inputs are excluded from hosted schemas.
1709
- - Connected scrape pricing is consistently advertised and billed at 2 credits for a page, 2 credits for a SERP, and 5 credits for an AI answer.
1710
- - MCP Scraper now depends on `mcpscraper-memory-tools` 1.13.1 for the released governed image Memory surface.
1711
-
1712
- ### Security
1713
-
1714
- - Separated hosted Memory destinations from local filesystem delivery and prevented hosted callers from proposing server filesystem paths.
1715
- - Added trust-boundary checks for third-party content, connected actions, artifact ownership, and deployment-specific tool contracts.
1716
- - Updated Hono and the image-decoding dependency chain to patched releases before exposing the new hosted surface.
1717
-
1718
- ### Removed
1719
-
1720
- - Retired obsolete public agent guides, generated social-card assets, and legacy MCP bundle metadata that no longer represented a consumed product surface.
1721
-
1722
- ## [0.42.2] - 2026-08-03
1723
-
1724
- ### Fixed
1725
-
1726
- - Unified MCP clients can list schedules created before artifact templates existed; the embedded Memory tool now normalizes those actions to the canonical no-artifact selection.
1727
-
1728
- ## [0.42.1] - 2026-07-30
1729
-
1730
- ### Fixed
1731
-
1732
- - Routed scheduled-result, artifact-template, and public artifact-view requests
1733
- to the production API function instead of the frontend/static fallback.
1734
- - Updated the API bridge to call the exact hosted Memory tool names advertised
1735
- by `tools/list`, restoring live result and template reads and mutations.
1736
-
1737
- ## [0.42.0] - 2026-07-30
1738
-
1739
- ### Added
1740
-
1741
- - Added the MCP Scraper side of a unified Scheduled Results inbox: strict
1742
- owner-scoped result/template API proxies, stable opaque run references,
1743
- structured MCP tools, and idempotent opened/archive mutations.
1744
- - Added immutable saved artifact-template contracts with the first registered
1745
- `editorial_reading_room_v1` renderer, durable private scheduled HTML
1746
- artifacts, and signed scheduler rendering that binds account identity to the
1747
- API-key-derived private-artifact owner.
1748
- - Added independently revocable, 1–30 day one-artifact view links whose bearer
1749
- tokens are hashed at rest and whose public metadata/content routes are
1750
- no-store, no-referrer, noindex, sandbox-ready, and state neutral.
1751
-
1752
- ### Changed
1753
-
1754
- - Scheduled action create/edit contracts now explicitly carry either
1755
- `No artifact` or one exact immutable saved template version; choosing no
1756
- artifact continues normal Memory-note and vault output.
1757
-
1758
- ## [0.41.1] - 2026-07-30
1759
-
1760
- ### Fixed
1761
-
1762
- - Slack export provider-call idempotency now includes the exact history range and page limit, so a later export of the same channel cannot conflict with an earlier export that used different bounds.
1763
-
1764
- ## [0.41.0] - 2026-07-30
1765
-
1766
- ### Added
1767
-
1768
- - Added resumable whole-channel Slack exports to `export_connected_service_data`, including server-owned history pagination, bounded threaded-reply retrieval, provider-aware rate-limit delays, private JSONL delivery, and retrieval-ready week, file, and link metadata without automatically joining channels. Completed archives can retain raw embedded evidence alongside exact-query message rows and participant/weekly activity summaries.
1769
-
1770
- ### Changed
1771
-
1772
- - Git-triggered Vercel deployments now run for the backend production branch only, preventing unused pull-request branches from creating incomplete API previews while preserving automatic production deployment from `main`.
1773
- - The Vault Universe graph is now assembled from entitled notes in one server request instead of requiring the browser to request every note separately.
1774
-
1775
- ## [0.40.3] - 2026-07-30
1776
-
1777
- ### Security
1778
-
1779
- - Customer-facing tool and API failures no longer expose internal service names, vendor URLs, organization billing state, browser-session identifiers, proxy identifiers, or cleanup telemetry. Unexpected infrastructure failures now return a stable first-party `service_unavailable` response while full diagnostics remain server-side.
1780
-
1781
- ### Added
1782
-
1783
- - Asynchronous PAA harvests now run as durable Inngest jobs with progressive answer checkpoints, an idempotent billing hold and settlement, and a private seven-day compressed DOM artifact that can be reparsed without repeating the Google request.
1784
- - Added a bounded live canary for the production PAA capture path and focused coverage for queue ownership, runtime budgets, artifact policy, and AI-generated PAA answer citations.
1785
-
1786
- ### Changed
1787
-
1788
- - PAA browser work now uses Option 1's co-located Playwright execution with stealth mode's default managed proxy and native browser metadata. Location is expressed only through Google UULE, CAPTCHA solver waiting is capped at 60 seconds, and a fresh session is allowed once only when no useful data was captured.
1789
- - PAA invocations stop browser work at 250 seconds inside the 280-second application budget, reserving 30 seconds for persistence, cleanup, and settlement. The legacy cron worker no longer claims Inngest-owned PAA jobs.
1790
-
1791
- ### Fixed
1792
-
1793
- - PAA extraction now reads the dedicated AI-generated answer body and aria-labelled citations while ignoring hidden placeholder answers in collapsed rows.
1794
- - A private DOM artifact storage outage now returns the already-checkpointed PAA capture as a partial completed result instead of failing the whole durable job.
1795
- - Local live-test output is ignored so captured DOM and canary artifacts cannot become repository clutter.
1796
-
1797
- ## [0.40.2] - 2026-07-29
1798
-
1799
- ### Fixed
1800
-
1801
- - npm publication now builds the package before packing, ensuring clean release worktrees include the executable `dist/` files. This release supersedes the incomplete `0.40.1` registry artifact.
1802
-
1803
- ## [0.40.1] - 2026-07-29
1804
-
1805
- ### Added
1806
-
1807
- - Added the repository-owned money-keyword landing-page skill, including SERP-fingerprint differentiation, product deconstruction, real-output proof requirements, responsive route-parity validation, and reusable implementation templates.
1808
-
1809
- ### Fixed
1810
-
1811
- - Installed MCP clients once again reach connected services through the canonical machine API routes, restoring `list_service_connections`, connection tests, provider reads, schema discovery, and gated actions instead of returning the public integrations page or Vercel 404 responses.
1812
- - Production builds no longer invoke the retired legacy dashboard and OG-page generators after those frontend sources moved out of this repository.
1813
- - Workshop reminders now use warmer, use-case-led copy and a soft-blue “bring this with you” prompt card while preserving the standalone brain, white reading surface, and blue action button. Existing scheduled reminders can be safely refreshed through a dry-run-first operator command.
1814
- - Workshop email headers now use the standalone transparent brain mark without a square tile around it.
1815
- - Workshop confirmation, waitlist, reminder, and Field Notes follow-up emails now use the current MCP Scraper brain mark, a blue branded heading above a white reading surface, and a blue action button with white text.
1816
- - Confirmed workshop registrants now receive a separate, retry-safe Field Notes reading guide with three-sentence introductions to all 22 workshop notes.
1817
- - Workshop confirmation emails and reminders no longer fail when Resend's optional contact or segment sync is unavailable. The attendee remains retryable, receives the transactional event messages, and can be organized in Resend later without consuming another seat.
1818
-
1819
- ### Changed
1820
-
1821
- - Specialist landing-page generation now has a version-controlled source on `main` instead of depending on an untracked local skill directory.
1822
- - August workshop registrations now schedule event-only Resend reminders 48 hours, 24 hours, and one hour before the live start. The registration ledger records each reminder independently and safely backfills a newly added future reminder without resending confirmations or existing reminders.
1823
-
1824
- ## [0.39.0] - 2026-07-28
1825
-
1826
- ### Added
1827
-
1828
- - Added `editorial_reading_room_guide`, `create_editorial_reading_room`, and `renew_editorial_reading_room_download` so agents can turn fully authored, source-grounded collections into one self-contained mobile-first editorial reading surface. Hosted clients receive a private renewable HTML artifact; local stdio clients receive a non-overwriting HTML file they can open directly.
1829
- - Added public-domain routing, sitemap entries, and a canonical `robots.txt` declaration for the Web Scraping for AI Agents and Web Scraping MCP Server use-case pages.
1830
- - Added an owned August workshop registration path with an authoritative capacity and waitlist ledger, attached calendar invitations for the live Zoom room, server-only join-link delivery, dedicated Resend segment/topic membership, and branded event confirmations that do not opt attendees into general marketing.
1831
- - Added retry-safe, event-only Resend reminders scheduled for 24 hours and one hour before the August 6 live workshop, with each scheduled email recorded separately in the registration ledger.
1832
-
1833
- ## [0.38.2] - 2026-07-28
1834
-
1835
- ### Fixed
1836
-
1837
- - Credit-wallet reconciliation now uses compare-and-swap retries instead of overwriting concurrent debits with a stale lot projection; overlapping expiration sweeps record each expired lot exactly once; and Stripe webhook failures remain retryable until their side effects finish. New database guards also reject invalid lot balances and duplicate migration lots without rewriting historical accounts that still require manual review.
1838
-
1839
- ## [0.38.1] - 2026-07-28
1840
-
1841
- ### Fixed
1842
-
1843
- - Credit wallets now keep legacy migration, Stripe invoice grants, ordinary debits, FIFO lot allocation, ledger history, and cached balances inside atomic database operations. This prevents concurrent requests from minting duplicate migration credit, creating post-migration-era phantom lots, or overdrawing individual lots below zero. Operators also have SHA-confirmed, idempotent repair tooling that records durable before/plan/after receipts and automatically reduces only high-confidence production drift.
1844
- - Stripe subscription invoices with a recognized tier but a zero total no longer grant a fresh monthly credit allowance.
1845
-
1846
- ## [0.38.0] - 2026-07-28
1847
-
1848
- ### Added
1849
-
1850
- - `archive_read` opens bounded public HTTPS ZIP files, including the `bundleUrl` returned by `check_site_export`. Omit `path` to list files, select an exact UTF-8 text path for windowed reading, or set `depositToLibrary:true` to preserve the complete selected source in the tenant Library vault with sanitized archive-and-entry provenance.
1851
-
1852
- ### Security
1853
-
1854
- - ZIP processing rejects private-network and unsafe redirect targets, encrypted entries, symbolic links, traversal paths, unsupported binary inline reads, excessive entry or expanded-size totals, oversized readable files, and suspicious compression ratios.
1855
-
1856
- ## [0.37.1] - 2026-07-28
1857
-
1858
- ### Fixed
1859
-
1860
- - Ships memory-tools 1.10.1 so `merge-memory-tags` no longer fails with a unique-index violation when the canonical tag is not already a registry row.
1861
-
1862
- ## [0.37.0] - 2026-07-28
1863
-
1864
- ### Added
1865
-
1866
- - `merge-memory-tags` on the memory surface collapses a duplicate tag into the canonical one across the whole account, retagging every note and recording the retired spelling as an alias.
1867
- - Operators can adjust a customer's credits from one admin endpoint at `/admin/credits`, which grants, revokes, edits, and reverses adjustments, and a companion lookup that reports the current balance, active credit lots with the next expiry date, every prior adjustment, and recent ledger activity. Each adjustment requires a reason and records the operator who made it. Adjustments are idempotent under a caller-supplied reference, so an interrupted or repeated request cannot pay out or take credits twice. Editing an adjustment changes its effective amount and moves only the difference; reversing one restores the current amount and locks it from further edits. Credit movements remain append-only — no ledger row is rewritten or deleted — and every amendment is kept with its actor and timestamp. Guardrails reject non-whole or non-positive amounts, missing or too-short reasons, revokes that would overdraw a wallet, deactivated accounts, adjustments above 100,000 credits without explicit confirmation, and anything above a 10,000,000 hard ceiling.
1868
- - Wallet grants can now be applied through an idempotent primitive that commits the credit lot, the balance update, and the ledger row as one all-or-nothing batch behind a durable receipt, matching the protection debits already had. Startup migration adds the three tables this requires (`billing_credits`, `admin_credit_adjustments`, `admin_credit_adjustment_events`) automatically on first boot after deployment.
1869
-
1870
- ## [0.36.0] - 2026-07-27
1871
-
1872
- ### Added
1873
-
1874
- - Added durable whole-site extraction and audit jobs with idempotent dispatch, persisted progress, resumable reconciliation, bounded responses, private artifact bundles, and explicit partial-result evidence.
1875
- - Added `directory_workflow`, `directory_workflow_status`, and `location_markets` so agents can build and monitor regional business directories against hosted GeoNames-derived market data without holding one request open.
1876
- - Added `map_wayback_snapshots` plus Wayback-aware page and site extraction for availability inventories, selected-page timelines, multi-month replay bundles, and capture matrices.
1877
- - Added the standalone Tampa recovery directory and mobile-responsive vault app source packages, including evidence-backed listing pages, resource guides, legal routes, responsive navigation, and build/deployment configuration.
1878
- - Added connected-service cost telemetry and exact usage settlement for browser, Nango function, proxy, and compute activity, with durable receipts and retry-safe reconciliation.
1879
- - Added the repo-owned blog-post pipeline, product/email operating guides, MCP Bible private proof-of-concept contracts, and generated marketing/email assets used by the current product surfaces.
1880
-
1881
- ### Changed
1882
-
1883
- - Expanded the unified MCP catalog to 170 tools (81 scraper/browser/workflow/billing/connection tools and 89 memory tools), with regenerated manifests, package metadata, public skill guidance, and tool-craft reports.
1884
- - Maps search can now request configured services and areas served, and reports service-enrichment attempts explicitly when provider pages do not expose them.
1885
- - SERP/PAA harvests now retry structurally degraded captures when usable primary evidence is missing and report the final degradation instead of silently accepting an empty success.
1886
- - CLI agent installation now rolls back partial configuration changes when a later install step fails.
1887
-
1888
- ### Fixed
1889
-
1890
- - Zoom transcript exports now stay on the scheduler-backed adapter until the main MCP has an equivalent exporter, preventing valid `zoom_transcripts` requests from failing with `INVALID_ARGUMENT`.
1891
- - Zoom transcript synchronization now discovers VTT recording files through recording metadata and downloads them through the authenticated Nango proxy instead of repeatedly calling Zoom's heavily rate-limited transcript-content action.
1892
- - Build scripts and repo-agent helpers now load TypeScript through Node's `--import tsx` hook instead of the `tsx` CLI, avoiding Unix IPC socket failures in managed sandboxes.
1893
-
1894
- ## [0.34.1] - 2026-07-26
1895
-
1896
- ### Fixed
1897
-
1898
- - `query_fanout_workflow` now keeps hosted OAuth/HTTP fan-out results inline even when callers send `export: true`, instead of trying to create inaccessible browser-service files. Installed stdio/MCPB clients still receive optional local JSON/CSV/TSV/HTML exports; a local export failure no longer discards the captured research.
1899
- - The MCPB download metadata and checksum now match the current package bundle, and the tool-craft lint checks the generated runtime manifest instead of a deleted source manifest.
1900
- - Current public copy now reflects the complete 167-tool catalog (78 scraper/browser/workflow/billing/connection tools plus 89 memory tools).
1901
-
1902
- ### Changed
1903
-
1904
- - All video transcription (`youtube_transcribe`, `facebook_ad_transcribe`, `facebook_video_transcribe`, `google_ads_transcribe`, `instagram_transcribe`) now uses one uniform pricing model: a flat base charge (20,000 mc) plus a per-minute-of-video rate (200 mc/min), reconciled after transcription to the real video length. Replaces the previous mix of YouTube's flat 200 mc/min (which sat below vendor cost on audio-fallback videos) and the others' `vendor_cost x 3` model. Wizper's real cost is a few compute-seconds per call regardless of length, so a flat + per-minute charge cleanly covers it at ~4-6x margin.
1905
-
1906
- ## [0.34.0] - 2026-07-24
1907
-
1908
- ### Changed
1909
-
1910
- - `reddit_trending` now discovers threads through a Google `site:reddit.com <topic>` search with a real recency window (new `window` = `week`|`month`, default month) instead of Reddit's own logged-out search, which had degraded to returning site-wide junk regardless of the query. It then scrapes **all** discovered threads in parallel (bounded concurrency) for genuine upvotes, comments, and questions, and ranks by engagement. `maxThreads` default raised to 20 (scrape-all) with a 40 ceiling and is the adjustable cost cap; scraping respects a soft deadline and reports `partial: true` with `candidatesFound`/`threadsScraped` if it stops early rather than exceeding the request limit. `includeComments: false` is now a genuinely cheap discovery-only mode (relevant thread list, no scraping, no per-thread billing). Billing is unchanged per operation (one discovery debit + `reddit_thread` per scraped thread + `reddit_comment` per captured comment, each refunded on failure). Response drops `searchUrl`/`attempts`/`proxied` in favor of `searchQuery`, `candidatesFound`, and `partial`.
1911
-
1912
- ### Added
1913
-
1914
- - `search_serp` accepts an optional `recency` window (`day`|`week`|`month`|`year`) that applies Google's "past day/week/month/year" time filter (`tbs=qdr:*`) to the query, including page 2. Omit it for all-time results — with `recency` unset the request URL is byte-identical to before, so existing SERP/PAA behavior is unchanged. Useful for "what is being said this week" queries and pairs naturally with a `site:` operator (e.g. `site:reddit.com <topic>`).
1915
-
1916
- - The SERP/PAA and Maps search retry ladders now append two strictly-last-resort attempts through the disposable backup proxy pool when it is configured and the whole normal ladder has been exhausted (skipped once the request's soft deadline has passed; each backup proxy is deleted after its attempt, win or lose). With the backup environment variables unset, attempt counts and behavior are unchanged.
1917
-
1918
- - New `reddit_trending` MCP tool registers the `POST /reddit/trending` endpoint on every MCP surface (stdio, hosted, and scheduled-action agents): discover the last 30 days of top Reddit conversations for a topic (optionally one subreddit), ranked by engagement (upvotes + 2x comments), with the real questions people asked per thread plus a flat deduped questions list. The tool defaults `maxThreads` to 5 (REST allows up to 25) because each scraped thread takes ~30s against the ~300s request ceiling; its guidance steers wide scans to `includeComments:false` discovery sweeps first, then targeted `reddit_thread` calls on the winners. Server instructions now split Reddit routing: `reddit_thread` reads ONE known thread URL, `reddit_trending` DISCOVERS what a niche is talking about. Unified tool catalog grows from 166 to 167 tools (copy surfaces updated to 166 = 77 scraper/browser/workflow/billing/connection + 89 memory).
1919
-
1920
- - Optional backup residential proxy pool via environment configuration. When the standard per-attempt proxy rotation is fully exhausted (Reddit and G2 review retries, and SERP/Maps proxy resolution ending in a create-error fallback), one strictly last-resort attempt runs through a disposable backup proxy, which is deleted immediately after use win or lose. With the environment variables unset, behavior is unchanged.
1921
- - New `POST /reddit/trending` REST endpoint ("Trending"): given a topic (optionally scoped to one subreddit), it scans the last 30 days of Reddit via an old-Reddit top/month search, ranks the hottest threads by engagement (upvotes + 2x comments), optionally scrapes the top threads' bodies and comments, and surfaces the live questions people are asking — per-thread `topQuestions` plus a flat deduped `questions` list with source thread URLs, and totals for threads, upvotes, and comments. Billing reuses the existing rates only: one `reddit_thread` debit for the discovery page, plus a normal `reddit_thread` + per-comment `reddit_comment` debit for each thread actually scraped, with the same refund-on-failure semantics as `POST /reddit/thread` (partial results bill only what succeeded). REST only for now; the MCP tool registration ships separately.
1922
- - `GET /schedule-actions/:id/runs` returns a scheduled action's real per-run history (newest first, up to 100 entries) proxied from the memory service's new `list-scheduled-action-runs` tool, so the dashboard's History column can show actual runs instead of "coming soon".
1923
- - `PUT /schedule-actions/:id` edits an existing scheduled action's description, vault, cadence, timeOfDay, and timezone in place via the memory service's new `update-scheduled-action` tool, preserving the action's id, status, connections, and run history; gated behind the paid scheduling tier like create and resume.
1924
- - New `GET /billing/summary` endpoint computes never-stale charge totals live from the credit ledger on every request (no cache, no materialized values): spent, refunded, granted, and purchased credits plus per-operation spend breakdown for the current calendar month (default) or a rolling 30-day window, alongside the current balance and the projected monthly connected-account charge.
1925
- - Communications inbox backend: operator broadcasts are now stored per user in a new `inbox_messages` table and readable from the dashboard API. `GET /inbox` lists a user's messages (newest first, read/unread state, no bodies), `GET /inbox/:id` returns the full markdown body, `POST /inbox/:id/opened` records the first in-product open (idempotent), and `DELETE /inbox/:id` soft-deletes. A new internal `POST /api/internal/inbox/broadcast` endpoint (same `x-internal-secret` auth as the other internal routes) fans one message out to all active users or a specific email list, reporting unknown emails as skipped.
1926
-
1927
- ### Fixed
1928
-
1929
- - `search_serp` now runs every attempt in a headful browser instead of saving headful for the final escalation only. Headless Google search attempts were being CAPTCHA-blocked at very high rates (a controlled probe measured 0/8 headless vs 8/8 headful on identical queries), so the earlier rungs were mostly wasted; PAA harvests already ran headful on every attempt and are unchanged.
1930
- - Dashboard session restoration now uses a lightweight non-cached bootstrap response instead of waiting for balance reconciliation and full job-history statistics before the dashboard can render.
1931
-
1932
- ## [0.33.7] - 2026-07-24
1933
-
1934
- ### Added
1935
-
1936
- - The private Sonic annual partner offer is now actually buyable. `/sonic` advertised a $300/yr offer whose CTA pointed at `/dashboard?offer=sonic-annual`; nothing read that parameter and `/dashboard` is auth-gated, so buyers hit the signup wall, lost the offer, and landed on a plan list that deliberately excludes it. Zero subscriptions had ever been sold. A new `/sonic/claim` page (in the dashboard app, rendered before sign-up so the offer survives account creation) opens embedded Stripe checkout for the $300 credits-only or $414 Memory Pro bundle and returns the buyer to the claim page on success. A new `GET /billing/offer/:slug` endpoint serves price, credits, expiry, and add-on details so the page cannot drift from what Stripe charges. Both Sonic prices moved to a dedicated `MCP Scraper — Sonic Annual` Stripe product so invoices and the billing portal stop naming the Starter plan.
1937
-
1938
- ### Fixed
1939
-
1940
- - `mcp-scraper-cli billing subscribe` reported annual plans as monthly, printing "$25/mo - 2,500,000 credits/mo" for a plan that charges $300 once a year, because `monthly_usd` carries a monthly-equivalent for annual tiers. Subscription tiers now publish the amount actually charged and its interval, and the CLI renders both, plus whether credits expire and whether Memory Pro is included.
1941
- - Buying a plan that bundles Memory Pro while already paying for the standalone $19/month Memory subscription left both charges running. The bundle overwrote the stored Memory subscription id with its own, so the standalone subscription kept billing and the pointer needed to cancel it was gone. The standalone subscription is now wound down at period end and the stored record is no longer repointed.
1942
- - The reverse of that leak: a subscriber whose plan already includes Memory Pro could open the Memory page and buy a second Memory subscription, because `POST /memory/checkout` never checked. It now refuses with `memory_already_included` before creating a Stripe session, and Memory entitlement resolves from the plan tier as well as the stored plan column, so a bundled subscriber stays on Pro with no standalone record.
1943
- - The billing page told every customer that credits last 3 months, which is untrue for partner-offer credits that never expire. The copy now follows the customer's actual tier.
1944
- - The terminal checkout error hint listed private partner tiers alongside the public plans.
1945
-
1946
- ## [0.33.6] - 2026-07-23
1947
-
1948
- ### Fixed
1949
-
1950
- - Dashboard integration-billing copy (Getting Started, Integrations, Scheduler, and account settings panels) still described the retired $3/month Stripe subscription charge for connected accounts. Updated every surface to the actual 15,000-credit wallet debit shipped in 0.33.5, and closed a related regression where the dashboard's default connection-fee display had silently fallen back to a hardcoded value after the 0.33.5 rate-policy field rename.
1951
-
1952
- ## [0.33.5] - 2026-07-23
1953
-
1954
- ### Added
1955
-
1956
- - Threaded support reply capture now links each inbound and outbound email to one People contact, one Issues problem thread, and ordered Communication history. Replies sent from the forwarded support inbox pass through a private thread address so the operator can answer normally without losing the outbound side of the conversation.
1957
-
1958
- ### Changed
1959
-
1960
- - Connected-account billing no longer routes through a real Stripe subscription line item. Connecting an account now draws 15,000 credits directly from the user's own balance (blocking the connection with a clear insufficient-credits message if they're short), and renewals debit the same way inside the plan's own renewal webhook. No Stripe API calls remain in this path.
1961
-
1962
- ### Fixed
1963
-
1964
- - `maps_place_intel` with `includeServices: true` now reaches the exact Google Business Profile through organic local results, expands the full Services and Areas Served dialogs, ignores hidden duplicate dialogs, and retries blocked panel sessions. This restores complete configured service and service-area lists instead of truncated summaries or false `unavailable` results; `maps_search` service enrichment uses the same full-list extractor.
1965
- - Core startup migration now verifies required schema objects before trusting a migration receipt and repairs a missing `credit_lots.never_expires` column, preventing schema drift or partial application from taking authenticated billing routes offline.
1966
- - DMARC aggregate reports are acknowledged by the Resend webhook without being forwarded into the support inbox or stored as customer-support messages.
1967
-
1968
- ## [0.33.4] - 2026-07-22
1969
-
1970
- ### Changed
1971
-
1972
- - Cleaned up two stale `proxyZip` descriptions on the maps/directory tools that referenced a removed proxy option. No behavior change.
1973
-
1974
- ## [0.33.3] - 2026-07-22
1975
-
1976
- ### Changed
1977
-
1978
- - Tightened tool descriptions to describe intent without internal routing detail. Affects the `proxyMode`, `proxyZip`, `debug`, and `rotateProxies` field descriptions on the search/maps tools. No behavior change.
1979
-
1980
- ## [0.33.2] - 2026-07-22
1981
-
1982
- ### Changed
1983
-
1984
- - Blocked-search diagnostics now list up to 8 attempts (was 5), so the full `maps_search` transport ladder is visible when a search is CAPTCHA-blocked.
1985
-
1986
- ## [0.33.1] - 2026-07-22
1987
-
1988
- ### Changed
1989
-
1990
- - `maps_search` now runs an **8-attempt** transport ladder on the default route (was 4), so it has more chances to land on a clean egress IP when Google is CAPTCHA-blocking. Each attempt is a fresh browser session on a fresh IP; the tiers are 2× default stealth ISP, 2× stealth ISP via cross-site redirect, 2× direct egress via redirect, then 2× direct egress (the last headful). Only failed attempts run — a first-attempt success still returns immediately.
1991
-
1992
- ## [0.33.0] - 2026-07-22
1993
-
1994
- ### Removed
1995
-
1996
- - The residential proxy option (`proxyMode: "location"`) is no longer accepted by the Google Search and Maps tools — `maps_search`, `search_serp`/`harvest_paa`, `directory_workflow`, and the maps-based workflows now offer only `configured` and `none`. Residential is frequently CAPTCHA-blocked on Google and is not a supported route there; a request that still passes `"location"` is rejected (Search/workflows) or treated as clean egress (Maps). Residential remains in use where it works well — G2, Reddit, and YouTube — unchanged.
1997
-
1998
- ### Changed
1999
-
2000
- - Google localization now comes only from `gl` (country) plus the place in the search query. The `uule` geo parameter — verified not to reliably localize on its own — is no longer sent on Google Maps and Maps-adjacent search URLs; the location rides in the query text instead, which is the part that actually works. (Google Search/PAA still send `uule` for now.)
2001
- - The dashboard's Maps and SERP forms now collect **Country** and **City** as separate fields instead of a single "Location" input. Country sets `gl`; City is added to the search terms. Only country-level targeting is reliable without residential proxies, which is why there is no state/region field.
2002
-
2003
- ## [0.32.3] - 2026-07-22
2004
-
2005
- ### Added
2006
-
2007
- - `gmail_search_contacts`: aggregates Gmail search results into deduplicated sender contacts, instead of requiring a separate get-message call per raw MIME message.
2008
-
2009
- ### Changed
2010
-
2011
- - New service connections now default to having actions enabled, so connected-action sends work without a separate enable step. Existing connections are unchanged.
2012
-
2013
- ### Fixed
2014
-
2015
- - `maps_search` now returns a real `cid` and `cidDecimal` for each business. The finder cards carry Google's feature id (`0x…:0x…`, the second half being the CID) in each result's "Directions" link, which the extractor was ignoring — so every result reported `cid: null`. It now reads that link, decodes the CID, and sets `placeUrl` to the canonical `https://www.google.com/maps?cid=<id>` (a stable place link) instead of a name-based search URL. No extra page visits or cost.
2016
- - Subscription tier changes (Growth/Scale upgrades) now bill immediately. Previously the prorated charge was deferred to the next invoice cycle, so no invoice fired and no credits were granted for up to a month after an upgrade.
2017
- - Tier upgrades now grant the correct plan's credits. The `invoice.paid` webhook could read the old, cheaper tier's price line from a proration invoice and grant that smaller credit amount; it now resolves the tier from the subscription's live base plan.
2018
- - Connected-action sends and creates for Gmail, Slack, Google Calendar, and Zoom now work. They previously failed with "An action tool is required" because the route passed no action name to the connection layer.
2019
-
2020
- ## [0.32.2] - 2026-07-22
2021
-
2022
- ### Changed
2023
-
2024
- - `maps_search` now applies a transport ladder across its retry attempts so it can recover from Google soft-blocks instead of only retrying the same way. The first attempt is unchanged (Option 1's default stealth ISP proxy, direct navigation). Subsequent retries switch to direct egress and arrive at Google through a cross-site redirect (the combination that measurably clears blocks a cold navigation triggers); the final escalation attempt uses direct egress without the redirect and accepts any egress country. This only affects the `proxyMode: 'none'` default path and only its retries — a first-attempt success behaves exactly as before.
2025
-
2026
- ## [0.32.1] - 2026-07-22
2027
-
2028
- ### Fixed
2029
-
2030
- - `maps_search` returned zero results after reaching Google's local-results finder: the finder's business cards are `div[role="heading"]` elements, but the extractor was selecting `button` elements containing an `h3` — a stale DOM assumption that matched nothing (it was masked until now because the old cold-`udm` entry always blocked before extraction ran). Rewrote the card extraction to anchor on the real heading elements, which also now populates each result's `websiteUrl`.
2031
-
2032
- ## [0.32.0] - 2026-07-22
2033
-
2034
- ### Changed
2035
-
2036
- - `maps_search` now reaches Google's local-results finder the human way — it loads the organic results page and clicks "More businesses" instead of cold-loading the `udm=1` finder URL, which Google reliably CAPTCHA'd. This fixes the empty-result blocking on local business searches.
2037
-
2038
- ### Added
2039
-
2040
- - Optional `includeServices` on `maps_search` to enrich each returned business with its configured services and areas served (adds a page visit per business; no review cards). Results gain `services`, `areasServed`, and `profileDetailsStatus`.
2041
- - Internal, opt-in SERP anti-block transport (off by default, no behavior change unless enabled): redirect-arrival routing, a US-egress gate, and a retry-fresh strategy for the organic/PAA path.
2042
-
2043
- ## [0.31.0] - 2026-07-21
2044
-
2045
- ### Added
2046
-
2047
- - Organizations vault across every memory surface: a durable hub per company or organization, split out of People, with its own contract (required `organization_name`, socials, linked people/deals/projects), Vault App workspace tab, `/vault/api` validation, and prepare-write guidance that never invents an organization from an email domain.
2048
- - Required and recommended field governance for all 16 memory vaults: category (`domain`) is now validated and required on Knowledge, Library, and Examples and Inspirations; Communication requires `channel`; Issues require `severity`; Experiments require `hypothesis` and `metric`. Recommended fields warn without blocking.
2049
- - Optional, encouraged (never enforced) note sections: project hubs support Requirements, Evidence, Open Questions, and a Keep-a-Changelog-style dated Changelog; Knowledge supports "When Not To Apply"; Issues support "Workaround".
2050
- - New CRM-parity fields: Tasks `recurrence` and `snoozed_until`, Deals `probability`, People `birthday` and `socials`.
2051
-
2052
- ### Changed
2053
-
2054
- - The Inspiration vault is now "Examples and Inspirations" and the Communications vault is now "Communication"; the former names keep working permanently at every tool input.
2055
- - The Omni-Chat naming is now "Inbox" across tool descriptions and the dashboard vault guide, which now lists all 16 vaults.
2056
- - Hosted MCP instructions, stdio memory tool schemas, and the generated tool manifest regenerated for the 16-vault taxonomy.
2057
-
2058
- ## [0.30.0] - 2026-07-21
2059
-
2060
- ### Added
2061
-
2062
- - Added relationship-first CRM guidance for connected Gmail, Calendar, and Slack work: agents inspect existing People records, gather bounded source evidence, resolve identities, preserve provenance, verify writes, and report ambiguous records without sending or changing provider data.
2063
-
2064
- ### Changed
2065
-
2066
- - Projects now accept the user-facing `project_type` values `codebase`, `personal`, `work`, and `client` while retaining the existing `project_kind` compatibility value for stored records.
2067
- - Vault activity notes now resolve and attach to a real People record before they are written to the relationship-event ledger, preventing unlinked communication records.
2068
-
2069
- ## [0.29.1] - 2026-07-20
2070
-
2071
- ### Fixed
2072
-
2073
- - Restored Tasks as independent Inbox todos with optional People, Project, Deal, and Communication links; agents and the Vault API no longer require or infer a Project for task capture.
2074
- - Published the canonical People contact-card contract: Call, Text, Email, Note, Contact info, Memories, Deals, Projects, and Activity. Verified Gmail and Google Calendar facts now become linked Communication or Calendar records with stable provider references, never inferred contacts or bulk-imported history.
2075
-
2076
- ## [0.29.0] - 2026-07-20
2077
-
2078
- ### Added
2079
-
2080
- - Added a first-class Deals vault to the Vault API and MCP tool manifest, with governed People, Deal, Project, Task, and Communication relationships.
2081
- - Added explicit Overview review state for pending email approvals and communication attention. Approval and denial write state only; they never send email.
2082
-
2083
- ### Changed
2084
-
2085
- - Defined Projects as codebases, known client projects, personal projects, or continuing workstreams; new Tasks require a verified project rather than an Inbox/free-floating record.
2086
- - Updated public MCP instructions and write-tool descriptions to search first and ask rather than inventing missing people, projects, or deal parties.
2087
-
2088
- ## [0.28.3] - 2026-07-20
2089
-
2090
- ### Added
2091
-
2092
- - Added a revision-checked task-only deletion route for the Vault Task workspace. It refuses non-Task vault records and never exposes general note deletion through the Vault link.
2093
-
2094
- ## [0.28.2] - 2026-07-20
2095
-
2096
- ### Added
2097
-
2098
- - Added editable board stages and phases, task completion and project-linked task/activity/milestone records, and email-draft review actions to the Vault API. Accepting a draft records approval only; it does not send email.
2099
-
2100
- ### Fixed
2101
-
2102
- - Bounded and retried Vault workspace reads so a large account no longer fans out into hundreds of simultaneous memory reads that can deadlock the backing store.
2103
- - Stopped presenting legacy untyped People and Communications notes as people or email drafts, preventing raw memory titles from polluting the typed Vault views.
2104
-
2105
- ## [0.28.1] - 2026-07-20
2106
-
2107
- ### Changed
2108
-
2109
- - Consolidated the Vault App into the existing mcpscraper-web Next.js application at mcpscraper.dev/vault while keeping its authenticated API bridge in MCP Scraper.
2110
- - Removed the duplicate standalone Vault frontend and its separate deployment topology.
2111
-
2112
- ### Fixed
2113
-
2114
- - Routed new Vault links and browser access through the root domain, retaining the independently revocable Vault link lifecycle and leaving Omni-Chat unchanged.
2115
-
2116
- ## [0.28.0] - 2026-07-20
2117
-
2118
- ### Added
2119
-
2120
- - Added the mobile-first Vault App for people, organizations, deals, projects, and task records, preserving the established Rapport overview and Sprout task-composer interactions.
2121
- - Added independent `get_vault_app_link` and `revoke_vault_app_link` tools plus dedicated bearer-link storage, so Vault App access can be revoked without affecting Chat links.
2122
- - Added a same-origin Vault API that reads and writes the existing record vaults through a tokenized Vault App link.
2123
-
2124
- ### Changed
2125
-
2126
- - Registered the Vault App routes and tool cutovers in the aggregate MCP server while retaining the existing Chat UI and Chat link system unchanged.
2127
-
2128
- ## [0.27.0] - 2026-07-17
2129
-
2130
- ### Changed
2131
-
2132
- - Google Maps discovery now traverses localized Google local-results cards and their profile dialogs, then closes each dialog before continuing through the ranked list. Optional `includeServices` returns configured services and areas served without collecting review cards.
2133
- - Maps and directory searches now default to the direct localized Google route (query + UULE + `gl` + `hl`) instead of asserting residential proxy geolocation as the location mechanism.
2134
-
2135
- ## [0.26.3] - 2026-07-17
2136
-
2137
- ### Fixed
2138
-
2139
- - MCP Scraper stdio and MCPB memory calls now execute through the hosted aggregate MCP tool registration, preventing a lagging standalone memory backend from returning output that fails the locally advertised schema.
2140
-
2141
- ## [0.26.2] - 2026-07-16
2142
-
2143
- ### Fixed
2144
-
2145
- - Connected-service calls now preserve actionable provider failures instead of reporting every MCP invocation error as a transport outage.
2146
- - Search Console connection tests now make a safe `list-sites` probe, so a disabled Google Search Console API is reported before analysis begins.
2147
-
2148
- ## [0.26.1] - 2026-07-16
2149
-
2150
- ### Fixed
2151
-
2152
- - MCP connected-service tools now use the stable `/schedule-connections` machine route, avoiding the public `/integrations` page rewrite while retaining main-MCP ownership behind the route.
2153
-
2154
- ## [0.26.0] - 2026-07-16
2155
-
2156
- ### Added
2157
-
2158
- - Added the read-only `test_service_connection` MCP tool so clients can distinguish a temporary provider outage from an OAuth lifecycle problem before recommending reconnect.
2159
- - Added canonical main-MCP integration routes, signed scheduler execution routes, connected-account billing controls, and a bounded legacy migration command.
2160
-
2161
- ### Changed
2162
-
2163
- - The main MCP now owns connected-account credentials, provider policy, direct Nango transport, operational health, and usage settlement; Mastra remains responsible for schedules, orchestration, bindings, and checkpoints.
2164
- - Connection inventory and dashboard status now separate OAuth lifecycle state from current operational health, and the unified MCP inventory contains 163 tools.
2165
- - Resend remains explicitly scheduler-owned and is excluded from the Nango migration.
2166
-
2167
- ## [0.25.0] - 2026-07-16
2168
-
2169
- ### Added
2170
-
2171
- - Added a default Skills vault for reusable skill packages, requiring `scripts/` plus `references/`, `templates/`, or both.
2172
- - Added Smart RAG memory retrieval with exact vault, tag, date, type, kind, and metadata filters; three default query variants; 50 fused candidates; bounded one-hop graph expansion from eight seeds with five neighbors each; and Jina reranking to 30 results.
2173
-
2174
- ### Changed
2175
-
2176
- - Memory instructions now strongly direct clients to inspect the complete tag inventory and related notes before choosing tags or links.
2177
-
2178
- ## [0.24.0] - 2026-07-16
2179
-
2180
- ### Added
2181
-
2182
- - Added six API-only Google Search Console batch actions for URL inspection, Search Analytics comparisons, property management, and sitemap management. Every batch is bounded and returns per-item receipts; destructive batches default to dry-run and require explicit confirmation.
2183
-
2184
- ## [0.23.0] - 2026-07-16
2185
-
2186
- ### Added
2187
-
2188
- - Scheduled Google Search Console sync now maintains one typed tenant-owned `gsc_performance_*` table per connection, with indexed dimensions and metrics, idempotent overlap upserts, and cleanup when the connection is revoked.
2189
- - `export_search_console_table_data` filters persisted Search Console rows and creates a private renewable JSONL artifact without refetching Google.
2190
-
2191
- ### Changed
2192
-
2193
- - Search Console synchronization now processes a bounded production-scale slice of up to 50,000 rows per occurrence and exposes the resulting `tableName` for `table-describe`, `table-query`, and filtered download workflows.
2194
- - MCP instructions, tool schemas, generated manifests, dashboard integration details, scheduler copy, and documentation now distinguish fresh live-API exports from synchronized table data.
2195
-
2196
- ### Fixed
2197
-
2198
- - Search Console record identities are now stable hashes instead of null-delimited strings that PostgreSQL JSONB rejects.
2199
- - Legacy connection digests can no longer claim Search Console connections or overwrite their structured table schema.
2200
-
2201
- ## [0.22.0] - 2026-07-16
2202
-
2203
- ### Changed
2204
-
2205
- - Calendar event creation now requires a meaningful description and an explicit attendees array, and forwards both fields to Google Calendar.
2206
- - Zoom meeting creation now requires an agenda. Invitees must be added to the corresponding Calendar event because Zoom meeting creation does not send calendar invitations.
2207
-
2208
- ### Fixed
2209
-
2210
- - Gmail sends now use the dedicated simple-input MCP tool and construct the MIME message and base64url payload server-side.
2211
- - Gmail subjects support Unicode encoding and reject newline-based header injection.
2212
-
2213
- ### Migration
2214
-
2215
- - Callers creating Calendar events must provide `description` and `attendees`; use `attendees: []` only when there is intentionally no invitee.
2216
- - Callers creating Zoom meetings must provide `agenda`.
2217
-
2218
- ## [0.21.5] - 2026-07-16
2219
-
2220
- ### Added
2221
-
2222
- - Google Search Console as a first-class Nango connection with six bounded reads and four gated property and sitemap actions.
2223
- - A deterministic `search_console_performance` export that can run immediately, on a schedule, or into private Memory with bounded pagination and continuation.
2224
-
2225
- ### Changed
2226
-
2227
- - Dashboard, onboarding guidance, public docs, generated tool contracts, and SDK examples now describe the Search Console connection and export workflow consistently.
2228
-
2229
- ### Added
2230
-
2231
- - A private Sonic annual subscription entitlement with 2.5 million non-expiring Credits, plus an optional combined annual price that provisions Memory Pro at 50% off, with the partner page routed through the production domain.
2232
- - A `/data-deletion` page with standalone Meta/Facebook data-deletion instructions, linked from the Privacy and Terms footers.
2233
- - `connection_sync` execution mode for scheduled actions: deterministic, read-only ingestion from bound service connections as an alternative to agent-driven runs.
2234
- - Resend inbound email handling and transactional templates.
2235
-
2236
- ### Fixed
2237
-
2238
- - Restored the `Billing` page, `RATE_CARD`, and related components, which a prior commit accidentally deleted along with the old Docs page, causing a blank screen on Billing and Credits.
2239
- - `/me` no longer runs its balance and usage-stats queries sequentially.
2240
- - `/history` no longer ships every row's full raw result inline; the History viewer now fetches a row's full result on demand.
2241
- - Dashboard tabs no longer refetch history and balance data on every tab switch.
2242
-
2243
- ## [0.21.4] - 2026-07-14
2244
-
2245
- ### Fixed
2246
-
2247
- - SERP and SERP Intelligence capture now settle to the actual headless/headful rate: 4 Credits for headless execution or 14 Credits when anti-bot escalation requires headful mode.
2248
- - Optional embedded SERP Intelligence page snapshots are now held and settled at 1 Credit per attempted URL, and their browser launches cannot overwrite the SERP mode used for billing.
2249
- - SERP Intelligence holds and refunds are now idempotent and recoverable across retries and ambiguous database responses; conflicting reuse of an `Idempotency-Key` is rejected without a second charge.
2250
- - SERP Intelligence MCP responses now reflect the real nested API payload, including accurate result, snapshot, attempt, failure, and Credit counts; structured `targets` can be used without a redundant `urls` array.
2251
- - Successful charged captures no longer become retryable failures when best-effort request audit logging is unavailable.
2252
- - Serverless database initialization now uses a versioned schema-ready fast path and a bounded 20-second gate instead of replaying 84 remote DDL statements on every cold start.
2253
- - Browser-agent and cost-telemetry schemas now use concurrency-safe, one-query readiness checks before running legacy DDL.
2254
- - Oversized duplicate payloads in `request_events` are replaced with byte-count and SHA-256 integrity metadata, preventing further multi-gigabyte audit-table growth without changing caller responses or canonical job/export artifacts.
2255
-
2256
- ## [0.11.0] - 2026-07-11
2257
-
2258
- ### Added
2259
-
2260
- - A connected-service catalog for Gmail, GitHub, Slack, Google Calendar, Drive, Analytics, LinkedIn, Facebook, YouTube, Xero, Zoom, X, and other supported providers.
2261
- - The `read_service_connection` MCP tool for calling only the approved read tools exposed by a connected account.
2262
- - Permission-gated live actions for Gmail, Slack, Google Calendar, and Zoom.
2263
- - Service-connection vaults and scheduled digests for durable connected-account history.
3
+ ## [0.98.0] - 2026-10-15
2264
4
 
2265
5
  ### Changed
2266
6
 
2267
- - The integrations screen now shows the exact read and action tools available for every connected account.
2268
- - Write actions remain unavailable until the account owner explicitly enables them.
2269
- - Provider-specific connection data is normalized into one agent-facing contract.
2270
-
2271
- [Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.97.1...HEAD
2272
- [0.95.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.95.1...v0.95.2
2273
- [0.95.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.95.0...v0.95.1
2274
- [0.95.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.94.4...v0.95.0
2275
- [0.94.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.94.3...v0.94.4
2276
- [0.94.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.94.2...v0.94.3
2277
- [0.94.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.94.1...v0.94.2
2278
- [0.94.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.94.0...v0.94.1
2279
- [0.94.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.93.4...v0.94.0
2280
- [0.93.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.93.3...v0.93.4
2281
- [0.93.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.93.2...v0.93.3
2282
- [0.93.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.93.1...v0.93.2
2283
- [0.93.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.93.0...v0.93.1
2284
- [0.93.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.92.1...v0.93.0
2285
- [0.92.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.92.0...v0.92.1
2286
- [0.92.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.91.0...v0.92.0
2287
- [0.91.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.90.8...v0.91.0
2288
- [0.90.8]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.90.7...v0.90.8
2289
- [0.90.7]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.90.6...v0.90.7
2290
- [0.88.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.87.0...v0.88.0
2291
- [0.87.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.86.5...v0.87.0
2292
- [0.86.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.85.0...v0.86.0
2293
- [0.84.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.5...v0.84.0
2294
- [0.83.5]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.4...v0.83.5
2295
- [0.83.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.3...v0.83.4
2296
- [0.83.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.2...v0.83.3
2297
- [0.83.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.1...v0.83.2
2298
- [0.83.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.0...v0.83.1
2299
- [0.83.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.82.0...v0.83.0
2300
- [0.82.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.81.0...v0.82.0
2301
- [0.81.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.80.0...v0.81.0
2302
- [0.80.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.79.4...v0.80.0
2303
- [0.79.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.79.3...v0.79.4
2304
- [0.79.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.79.2...v0.79.3
2305
- [0.79.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.79.1...v0.79.2
2306
- [0.79.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.79.0...v0.79.1
2307
- [0.79.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.78.0...v0.79.0
2308
- [0.78.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.77.0...v0.78.0
2309
- [0.77.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.76.0...v0.77.0
2310
- [0.76.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.75.1...v0.76.0
2311
- [0.75.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.75.0...v0.75.1
2312
- [0.75.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.74.0...v0.75.0
2313
- [0.74.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.5...v0.74.0
2314
- [0.73.5]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.4...v0.73.5
2315
- [0.73.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.3...v0.73.4
2316
- [0.73.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.2...v0.73.3
2317
- [0.73.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.1...v0.73.2
2318
- [0.73.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.0...v0.73.1
2319
- [0.73.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.72.7...v0.73.0
2320
- [0.72.7]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.72.6...v0.72.7
2321
- [0.72.6]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.72.5...v0.72.6
2322
- [0.72.5]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.72.4...v0.72.5
2323
- [0.72.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.72.3...v0.72.4
2324
- [0.72.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.72.2...v0.72.3
2325
- [0.72.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.72.1...v0.72.2
2326
- [0.72.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.72.0...v0.72.1
2327
- [0.72.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.71.0...v0.72.0
2328
- [0.71.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.70.0...v0.71.0
2329
- [0.70.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.69.0...v0.70.0
2330
- [0.69.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.68.0...v0.69.0
2331
- [0.68.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.67.1...v0.68.0
2332
- [0.67.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.67.0...v0.67.1
2333
- [0.67.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.66.7...v0.67.0
2334
- [0.66.7]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.66.6...v0.66.7
2335
- [0.66.6]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.66.5...v0.66.6
2336
- [0.66.5]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.66.4...v0.66.5
2337
- [0.66.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.66.3...v0.66.4
2338
- [0.66.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.66.2...v0.66.3
2339
- [0.66.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.66.1...v0.66.2
2340
- [0.66.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.66.0...v0.66.1
2341
- [0.66.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.65.1...v0.66.0
2342
- [0.65.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.65.0...v0.65.1
2343
- [0.65.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.64.1...v0.65.0
2344
- [0.64.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.64.0...v0.64.1
2345
- [0.64.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.63.2...v0.64.0
2346
- [0.63.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.63.1...v0.63.2
2347
- [0.63.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.63.0...v0.63.1
2348
- [0.63.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.60.0...v0.63.0
2349
- [0.55.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.54.4...v0.55.0
2350
- [0.54.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.54.3...v0.54.4
2351
- [0.54.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.54.2...v0.54.3
2352
- [0.54.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.54.1...v0.54.2
2353
- [0.54.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.54.0...v0.54.1
2354
- [0.54.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.53.1...v0.54.0
2355
- [0.53.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.53.0...v0.53.1
2356
- [0.53.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.52.4...v0.53.0
2357
- [0.52.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.52.3...v0.52.4
2358
- [0.52.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.52.2...v0.52.3
2359
- [0.52.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.52.1...v0.52.2
2360
- [0.52.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.52.0...v0.52.1
2361
- [0.52.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.51.2...v0.52.0
2362
- [0.51.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.51.1...v0.51.2
2363
- [0.51.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.51.0...v0.51.1
2364
- [0.51.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.50.0...v0.51.0
2365
- [0.50.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.49.0...v0.50.0
2366
- [0.49.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.48.0...v0.49.0
2367
- [0.48.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.47.0...v0.48.0
2368
- [0.47.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.46.0...v0.47.0
2369
- [0.46.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.45.0...v0.46.0
2370
- [0.45.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.44.4...v0.45.0
2371
- [0.44.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.44.3...v0.44.4
2372
- [0.44.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.44.2...v0.44.3
2373
- [0.44.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.44.1...v0.44.2
2374
- [0.44.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.44.0...v0.44.1
2375
- [0.44.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.43.6...v0.44.0
2376
- [0.43.6]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.43.5...v0.43.6
2377
- [0.43.5]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.43.4...v0.43.5
2378
- [0.43.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.43.3...v0.43.4
2379
- [0.43.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.43.2...v0.43.3
2380
- [0.43.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.43.1...v0.43.2
2381
- [0.43.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.43.0...v0.43.1
2382
- [0.43.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.42.2...v0.43.0
2383
- [0.42.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.42.1...v0.42.2
2384
- [0.42.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.42.0...v0.42.1
2385
- [0.42.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.41.1...v0.42.0
2386
- [0.41.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.41.0...v0.41.1
2387
- [0.41.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.40.3...v0.41.0
2388
- [0.40.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.40.2...v0.40.3
2389
- [0.40.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.40.1...v0.40.2
2390
- [0.40.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.39.0...v0.40.1
2391
- [0.39.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.38.2...v0.39.0
2392
- [0.38.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.38.1...v0.38.2
2393
- [0.38.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.38.0...v0.38.1
2394
- [0.38.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.36.0...v0.38.0
2395
- [0.37.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.37.0...v0.37.1
2396
- [0.37.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.36.0...v0.37.0
2397
- [0.36.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.35.1...v0.36.0
2398
- [0.34.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.34.0...v0.34.1
2399
- [0.34.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.33.7...v0.34.0
2400
- [0.33.7]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.33.6...v0.33.7
2401
- [0.33.6]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.33.5...v0.33.6
2402
- [0.33.5]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.33.4...v0.33.5
2403
- [0.33.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.33.3...v0.33.4
2404
- [0.33.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.33.2...v0.33.3
2405
- [0.33.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.33.1...v0.33.2
2406
- [0.33.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.33.0...v0.33.1
2407
- [0.33.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.32.3...v0.33.0
2408
- [0.32.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.32.2...v0.32.3
2409
- [0.32.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.32.1...v0.32.2
2410
- [0.32.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.32.0...v0.32.1
2411
- [0.32.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.31.0...v0.32.0
2412
- [0.31.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.30.0...v0.31.0
2413
- [0.30.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.29.1...v0.30.0
2414
- [0.29.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.29.0...v0.29.1
2415
- [0.29.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.28.3...v0.29.0
2416
- [0.28.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.28.2...v0.28.3
2417
- [0.28.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.28.1...v0.28.2
2418
- [0.28.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.28.0...v0.28.1
2419
- [0.28.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.27.0...v0.28.0
2420
- [0.27.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.26.3...v0.27.0
2421
- [0.26.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.26.2...v0.26.3
2422
- [0.26.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.26.1...v0.26.2
2423
- [0.26.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.26.0...v0.26.1
2424
- [0.26.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.25.0...v0.26.0
2425
- [0.25.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.24.0...v0.25.0
2426
- [0.24.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.23.0...v0.24.0
2427
- [0.23.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.22.0...v0.23.0
2428
- [0.22.0]: https://github.com/VilovietaSEO/mcp-scraper/releases/tag/v0.22.0
2429
- [0.21.5]: https://github.com/VilovietaSEO/mcp-scraper/releases/tag/v0.21.5
2430
- [0.21.4]: https://github.com/VilovietaSEO/mcp-scraper/releases/tag/v0.21.4
2431
- [0.11.0]: https://github.com/VilovietaSEO/mcp-scraper/releases/tag/v0.11.0
2432
-
2433
- [0.89.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.88.3...v0.89.0
2434
- [0.89.8]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.89.7...v0.89.8
2435
- [0.89.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.89.0...v0.89.1
2436
- [0.89.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.89.1...v0.89.2
2437
- [0.89.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.89.2...v0.89.3
2438
- [0.89.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.89.3...v0.89.4
2439
- [0.89.5]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.89.4...v0.89.5
2440
- [0.96.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.95.2...v0.96.0
2441
- [0.96.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.96.0...v0.96.1
2442
- [0.96.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.96.1...v0.96.2
2443
-
2444
- [0.96.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.96.2...v0.96.3
2445
-
2446
- [0.97.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.96.3...v0.97.0
7
+ - **Breaking:** Ship an authenticated hosted-service client instead of local scraping and API-server implementations. Keep stdio, CLI, installation and workflow entrypoints, with workflows executing remotely.
8
+ - Change the library harvest helper to return public MCP results and delivery handles. Remove local execution options and video generator exports; use the hosted tools or official SDK.
9
+ - Prevent private server modules and dependencies from entering public builds. Publish only verified client files.
2447
10
 
2448
- [0.97.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.97.0...v0.97.1
11
+ [0.98.0]: https://github.com/VilovietaSEO/mcp-scraper/releases/tag/v0.98.0