mcpscraper-cli 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@ Command-line interface for [mcpscraper.dev](https://mcpscraper.dev) and [memory.
4
4
 
5
5
  [Release history](https://github.com/VilovietaSEO/mcpscraper-sdk/blob/main/CHANGELOG.md)
6
6
 
7
- The CLI provides friendly shortcuts for common operations plus universal discovery and invocation for every one of the 249 unified MCP tools (148 MCP Scraper plus 101 mirrored Memory tools).
7
+ The CLI provides friendly shortcuts for common operations plus universal discovery and invocation for every one of the 252 unified MCP tools (151 MCP Scraper plus 101 mirrored Memory tools).
8
8
 
9
9
  ## Install
10
10
 
@@ -37,7 +37,7 @@ mcpscraper tools call archive_read --args '{"url":"https://github.com/octocat/He
37
37
  mcpscraper tools call list_scheduled_runs --args '{"view":"inbox","limit":30}' --json
38
38
  ```
39
39
 
40
- `tools list` contains exactly 249 manifest-backed names. `tools call` accepts any one of them. Tools marked destructive require `--yes`.
40
+ `tools list` contains exactly 252 manifest-backed names. `tools call` accepts any one of them. Tools marked destructive require `--yes`.
41
41
 
42
42
  Google SERP searches cost 60 Credits. PAA harvests cost 400 Credits plus 10 Credits per returned question. For additional throughput, one optional $5/month concurrency pack adds two browser slots; pack quantity scales both slots and monthly price linearly.
43
43
 
package/dist/bin/cli.js CHANGED
@@ -9,7 +9,7 @@ import { join } from "path";
9
9
  import { ScraperClient, ScraperApiError } from "mcpscraper-sdk";
10
10
 
11
11
  // src/version.ts
12
- var CLI_VERSION = "0.26.0";
12
+ var CLI_VERSION = "0.27.0";
13
13
 
14
14
  // src/generated-tools.ts
15
15
  var MCP_TOOL_CATALOG = [
@@ -58,6 +58,12 @@ var MCP_TOOL_CATALOG = [
58
58
  "mobile"
59
59
  ]
60
60
  },
61
+ "idempotencyKey": {
62
+ "description": "Retry key: reuse after a timeout to avoid re-billing. New key per harvest.",
63
+ "type": "string",
64
+ "minLength": 8,
65
+ "maxLength": 200
66
+ },
61
67
  "serpIdentity": {
62
68
  "description": "Optional persistent SERP identity created with serp_identity_create. Reuses the same saved browser state and fixed network address across calls.",
63
69
  "type": "string",
@@ -145,6 +151,12 @@ var MCP_TOOL_CATALOG = [
145
151
  "mobile"
146
152
  ]
147
153
  },
154
+ "idempotencyKey": {
155
+ "description": "Retry key: reuse after a timeout to avoid re-billing. New key per search.",
156
+ "type": "string",
157
+ "minLength": 8,
158
+ "maxLength": 200
159
+ },
148
160
  "serpIdentity": {
149
161
  "description": "Optional persistent SERP identity created with serp_identity_create. Reuses the same saved browser state and fixed network address across calls.",
150
162
  "type": "string",
@@ -215,7 +227,7 @@ var MCP_TOOL_CATALOG = [
215
227
  "name": "extract_url",
216
228
  "category": "web",
217
229
  "title": "Single URL Extract",
218
- "description": "Extract structured data from one public URL: content, schema, headings, metadata, screenshots, branding, featured image, or media assets. Wayback replay URLs automatically return the archived page copy without playback chrome. Use delivery:auto for bounded inline results with automatic artifact offload, delivery:artifact for a durable owner-scoped report, or delivery:memory to save the full page into hosted MCP Memory. preserveMedia is the preferred media-retention flag; depositToVault and downloadMedia remain temporary compatibility aliases.",
230
+ "description": "Extract structured data from one public URL: content, schema, headings, metadata, screenshots, branding, featured image, or media assets. Tries a plain HTTP fetch first and only opens a stealth browser when that fetch is blocked, hits a bot check, or returns unusably thin content \u2014 most calls never need the browser, and a bot_check_unresolved error means the browser already tried and failed, not that a retry will help. Wayback replay URLs automatically return the archived page copy without playback chrome. Use delivery:auto for bounded inline results with automatic artifact offload, delivery:artifact for a durable owner-scoped report, or delivery:memory to save the full page into hosted MCP Memory. preserveMedia is the preferred media-retention flag; depositToVault and downloadMedia remain temporary compatibility aliases.",
219
231
  "inputSchema": {
220
232
  "type": "object",
221
233
  "properties": {
@@ -226,12 +238,12 @@ var MCP_TOOL_CATALOG = [
226
238
  },
227
239
  "screenshot": {
228
240
  "default": false,
229
- "description": "Capture a full-page screenshot and return it through the result contract. Large captures may be offloaded to an owned artifact.",
241
+ "description": "Capture a full-page screenshot. Large captures may be offloaded to an owned artifact.",
230
242
  "type": "boolean"
231
243
  },
232
244
  "screenshotDevice": {
233
245
  "default": "desktop",
234
- "description": "Viewport for screenshot. desktop = 1440\xD7900, mobile = 390\xD7844.",
246
+ "description": "Viewport: desktop = 1440\xD7900, mobile = 390\xD7844.",
235
247
  "type": "string",
236
248
  "enum": [
237
249
  "desktop",
@@ -240,16 +252,16 @@ var MCP_TOOL_CATALOG = [
240
252
  },
241
253
  "extractBranding": {
242
254
  "default": false,
243
- "description": "Extract brand colors, fonts, logo, and favicon via a rendered browser session.",
255
+ "description": "Extract brand colors, fonts, logo, and favicon via a rendered session.",
244
256
  "type": "boolean"
245
257
  },
246
258
  "includeFeaturedImage": {
247
259
  "default": false,
248
- "description": "Return the best featured image from Open Graph, Twitter, JSON-LD, or page content. For Wayback replay URLs, also returns the timestamp-matched archived image URL when available.",
260
+ "description": "Return the best featured image from Open Graph, Twitter, JSON-LD, or page content. Wayback URLs get the timestamp-matched archived image.",
249
261
  "type": "boolean"
250
262
  },
251
263
  "downloadMedia": {
252
- "description": "Deprecated alias for preserveMedia. Omit when using preserveMedia; when omitted, media preservation defaults to false.",
264
+ "description": "Deprecated alias for preserveMedia; omit when using preserveMedia.",
253
265
  "type": "boolean"
254
266
  },
255
267
  "mediaTypes": {
@@ -258,7 +270,7 @@ var MCP_TOOL_CATALOG = [
258
270
  "video",
259
271
  "audio"
260
272
  ],
261
- "description": "Which media types to download. Default all three.",
273
+ "description": "Media types to download. Default all three.",
262
274
  "type": "array",
263
275
  "items": {
264
276
  "type": "string",
@@ -271,21 +283,21 @@ var MCP_TOOL_CATALOG = [
271
283
  },
272
284
  "maxMediaAssets": {
273
285
  "default": 100,
274
- "description": "Maximum media records to retain and attempt to download after filtering and responsive-variant collapse.",
286
+ "description": "Maximum media records to retain after filtering and variant collapse.",
275
287
  "type": "integer",
276
288
  "minimum": 1,
277
289
  "maximum": 250
278
290
  },
279
291
  "maxInlineImages": {
280
292
  "default": 3,
281
- "description": "Maximum downloaded images to attach as AI-readable image content blocks. All successfully downloaded media remains available in the ZIP.",
293
+ "description": "Maximum images attached as AI-readable content blocks. All downloaded media stays available in the ZIP.",
282
294
  "type": "integer",
283
295
  "minimum": 0,
284
296
  "maximum": 5
285
297
  },
286
298
  "delivery": {
287
299
  "default": "auto",
288
- "description": "Where to deliver the result. auto keeps small results inline and offloads large ones; artifact always returns an owned artifact; memory stores the full page in hosted Memory; inline returns a bounded response.",
300
+ "description": "auto offloads large results; artifact always returns an artifact; memory stores in hosted Memory; inline is bounded.",
289
301
  "type": "string",
290
302
  "enum": [
291
303
  "auto",
@@ -296,19 +308,25 @@ var MCP_TOOL_CATALOG = [
296
308
  },
297
309
  "preserveMedia": {
298
310
  "default": false,
299
- "description": "Collect media from static source plus a rendered, lazy-loaded page; collapse responsive variants; return provenance and completeness; attach bounded image previews; and create an owner-scoped ZIP readable with archive_read.",
311
+ "description": "Collect media from static plus rendered page content, collapse responsive variants, attach bounded previews, and create an owner-scoped ZIP readable with archive_read.",
300
312
  "type": "boolean"
301
313
  },
302
314
  "depositToVault": {
303
315
  "default": false,
304
- "description": "Save the full page content into the user's MCP Memory vault server-side, embedded for semantic recall \u2014 the full body is NOT returned to chat.",
316
+ "description": "Save the full page content into the user's MCP Memory vault, embedded for semantic recall \u2014 the full body is NOT returned to chat.",
305
317
  "type": "boolean"
306
318
  },
307
319
  "vaultName": {
308
- "description": "Optional vault to deposit into. Defaults to the user's personal vault.",
320
+ "description": "Optional vault to deposit into; defaults to the personal vault.",
309
321
  "type": "string",
310
322
  "minLength": 1,
311
323
  "maxLength": 120
324
+ },
325
+ "idempotencyKey": {
326
+ "description": "Retry key: reuse after a timeout to avoid re-billing. New key per extraction.",
327
+ "type": "string",
328
+ "minLength": 8,
329
+ "maxLength": 200
312
330
  }
313
331
  },
314
332
  "required": [
@@ -495,7 +513,7 @@ var MCP_TOOL_CATALOG = [
495
513
  "name": "extract_site",
496
514
  "category": "web",
497
515
  "title": "Multi-Page Site Content Crawl",
498
- "description": "Crawl a public website and return page CONTENT (Markdown) across multiple pages. A Wayback replay URL produces one archived site snapshot. The optional wayback plan produces whole-site, single-page, or selected-page timelines across explicit months or a month range, all in one export with a capture matrix. Pass a new idempotencyKey for each intended crawl and reuse it only when retrying that call. Every MCP crawl starts a durable export; poll check_site_export for honest outcome counters and the saved ZIP. Content only \u2014 for a technical SEO audit use audit_site instead.",
516
+ "description": "Crawl a public website and return page CONTENT (Markdown) across multiple pages. Each page is fetched with a plain HTTP request first; a browser retries only the pages that were blocked or hit a bot check, so a per-page bot_check_unresolved result means that specific page already failed the browser retry too. A Wayback replay URL produces one archived site snapshot. The optional wayback plan produces whole-site, single-page, or selected-page timelines across explicit months or a month range, all in one export with a capture matrix. Pass a new idempotencyKey for each intended crawl and reuse it only when retrying that call. Every MCP crawl starts a durable export; poll check_site_export for honest outcome counters and the saved ZIP. Content only \u2014 for a technical SEO audit use audit_site instead.",
499
517
  "inputSchema": {
500
518
  "type": "object",
501
519
  "properties": {
@@ -1760,10 +1778,19 @@ var MCP_TOOL_CATALOG = [
1760
1778
  "name": "commons_search_entities",
1761
1779
  "category": "commons",
1762
1780
  "title": "Transparent Commons Entity Search",
1763
- "description": "Search the Transparent Commons public wiki graph using the same fields the public /wiki/ frontend uses: title, description, tags, keywords, JSON-LD, article body, citations, media, source metadata, related entities, trails, and saved account filters. This reads published Commons entities only.",
1781
+ "description": "Search the Transparent Commons public wiki graph. Hybrid by default: meaning-based candidates fused with exact matching over title, description, tags, keywords, JSON-LD, body, citations, media, source metadata, related entities, trails, and saved filters, ranked title-first. Set mode:lexical for a quoted exact name or phrase. Reads published Commons entities only; never a personal Memory vault.",
1764
1782
  "inputSchema": {
1765
1783
  "type": "object",
1766
1784
  "properties": {
1785
+ "mode": {
1786
+ "description": "Retrieval mode. hybrid (default) fuses meaning-based candidates with exact term matching; lexical matches terms only, which is what you want when the caller quoted an exact name or phrase; semantic ignores term matching entirely.",
1787
+ "type": "string",
1788
+ "enum": [
1789
+ "lexical",
1790
+ "semantic",
1791
+ "hybrid"
1792
+ ]
1793
+ },
1767
1794
  "query": {
1768
1795
  "description": "Search text matched against title, description, tags, keywords, JSON-LD, source metadata, citations, media, and article body.",
1769
1796
  "type": "string",
@@ -3032,7 +3059,7 @@ var MCP_TOOL_CATALOG = [
3032
3059
  "name": "commons_submit_entity",
3033
3060
  "category": "commons",
3034
3061
  "title": "Transparent Commons Governed Entity Write",
3035
- "description": "Create or propose an edit to a Transparent Commons public wiki entity through the governed MCP Scraper write plane. A new entity costs 10 Credits; an edit to an existing entity costs 2 Credits. Preparation and validation are free, and idempotent retries are not charged twice. This never edits rendered HTML directly. Normal workflow is commons_prepare_entity, compose, commons_validate_entity, then submit. Choose a precise entityType and write a neutral encyclopedia projection with the matching entity structure, not a blog article or raw scrape dump. Use H2 sections and H3/H4/H5 subitems; every heading appears in the public page menu. Omit unsupported sections instead of publishing empty/filler headings. It writes a proposal, records a contribution ledger entry when accepted, and auto-publishes only safe non-conflicting changes with a featured image and source/body evidence. Existing entity edits require baseRevision to auto-publish. Requires idempotencyKey.",
3062
+ "description": "Create or propose an edit to a Transparent Commons public wiki entity through the governed MCP Scraper write plane. A new entity costs 10 Credits; an edit to an existing entity costs 2 Credits. Preparation and validation are free, and idempotent retries are not charged twice. This never edits rendered HTML directly. Normal workflow is commons_prepare_entity, compose, commons_validate_entity, then submit. commons_prepare_entity returns the entity profile contract and section guidance to compose against. Transparent Commons is an open wiki: any account may edit any entity, and every edit publishes and is recorded on the public contribution ledger. Publishing requires a featured image and body/source evidence. Pass baseRevision when editing so the ledger can show whether the edit was written on top of a newer revision. Requires idempotencyKey.",
3036
3063
  "inputSchema": {
3037
3064
  "type": "object",
3038
3065
  "properties": {
@@ -3914,6 +3941,15 @@ var MCP_TOOL_CATALOG = [
3914
3941
  "filter": {
3915
3942
  "type": "object",
3916
3943
  "properties": {
3944
+ "mode": {
3945
+ "description": "Retrieval mode. hybrid (default) fuses meaning-based candidates with exact term matching; lexical matches terms only, which is what you want when the caller quoted an exact name or phrase; semantic ignores term matching entirely.",
3946
+ "type": "string",
3947
+ "enum": [
3948
+ "lexical",
3949
+ "semantic",
3950
+ "hybrid"
3951
+ ]
3952
+ },
3917
3953
  "query": {
3918
3954
  "description": "Search text matched against title, description, tags, keywords, JSON-LD, source metadata, citations, media, and article body.",
3919
3955
  "type": "string",
@@ -4932,7 +4968,7 @@ var MCP_TOOL_CATALOG = [
4932
4968
  "name": "local_sourcebook_submission_status",
4933
4969
  "category": "directory",
4934
4970
  "title": "Local Sourcebook Submission Status",
4935
- "description": "Read the authenticated caller\u2019s listing draft, enrichment coverage, immutable revision number, publication state, and exact live LocalSourcebook.com profile and reviews URLs.",
4971
+ "description": "Read the caller\u2019s listing draft, enrichment coverage, revision number, publication state, and live LocalSourcebook.com profile and reviews URLs. When status is failed, acquisitionError says why \u2014 read it before retrying, since a refresh repeats the same acquisition. Coverage counters are written only on success, so zeroed counters on a failed listing do not mean the crawl never ran.",
4936
4972
  "inputSchema": {
4937
4973
  "type": "object",
4938
4974
  "properties": {
@@ -4959,7 +4995,7 @@ var MCP_TOOL_CATALOG = [
4959
4995
  "name": "local_sourcebook_refresh",
4960
4996
  "category": "directory",
4961
4997
  "title": "Refresh a Local Sourcebook Listing",
4962
- "description": "Queue a new broad crawl and review/media acquisition pass for a listing owned by the authenticated MCP Scraper account. A refresh costs 2 Credits total, including acquisition; idempotent retries are not charged twice. The last published revision remains public until the refreshed evidence revision completes and auto-publishes.",
4998
+ "description": "Queue a new broad crawl and review/media acquisition pass for a listing owned by the authenticated MCP Scraper account. A refresh costs 2 Credits total, including acquisition; idempotent retries are not charged twice, and a replayed retry still re-runs the acquisition, so a failed listing is always recoverable. Read local_sourcebook_submission_status first: a refresh repeats the same acquisition, so fix whatever acquisitionError reports before spending another pass. The last published revision remains public until the refreshed evidence revision completes and auto-publishes.",
4963
4999
  "inputSchema": {
4964
5000
  "type": "object",
4965
5001
  "properties": {
@@ -16698,10 +16734,14 @@ var MCP_TOOL_CATALOG = [
16698
16734
  "name": "commons_get_publication",
16699
16735
  "category": "commons",
16700
16736
  "title": "Get Transparent Commons Publication",
16701
- "description": "Read a Transparent Commons publication and its latest edition revisions. Omit subdomain to inspect the caller-owned publication; pass a name to inspect a public publication. Returns the permanent public and archive URLs needed for sharing or later edits.",
16737
+ "description": "Read a Transparent Commons publication and its latest edition revisions. Omit subdomain to inspect the caller-owned publication; pass a name to inspect a public publication. Returns the permanent public and archive URLs needed for sharing or later edits. Set includeArticles to also return every stored article\u2019s Markdown source and slug, which is what commons_update_editorial_article edits \u2014 the payload is large, so request it only when you intend to edit.",
16702
16738
  "inputSchema": {
16703
16739
  "type": "object",
16704
16740
  "properties": {
16741
+ "includeArticles": {
16742
+ "description": "Return every stored article\u2019s Markdown source alongside each edition. Large payload; request it only when you intend to edit an article. Owner-only: a publication read by name never returns sources.",
16743
+ "type": "boolean"
16744
+ },
16705
16745
  "subdomain": {
16706
16746
  "description": "Public publication name to inspect. Omit to return the publication owned by the authenticated account.",
16707
16747
  "type": "string",
@@ -17616,6 +17656,169 @@ var MCP_TOOL_CATALOG = [
17616
17656
  "idempotentHint": false,
17617
17657
  "openWorldHint": true
17618
17658
  }
17659
+ },
17660
+ {
17661
+ "name": "commons_get_proposal",
17662
+ "category": "commons",
17663
+ "title": "Transparent Commons Proposal Status",
17664
+ "description": "Read one commons_submit_entity proposal owned by the calling account. Use it when submit returned a proposal that was held for review instead of published, to see the review reason and whether it has since been applied.",
17665
+ "inputSchema": {
17666
+ "type": "object",
17667
+ "properties": {
17668
+ "proposalId": {
17669
+ "type": "string",
17670
+ "minLength": 1,
17671
+ "maxLength": 120,
17672
+ "description": "Proposal id returned by commons_submit_entity, in the form commons-proposal-<uuid>."
17673
+ }
17674
+ },
17675
+ "required": [
17676
+ "proposalId"
17677
+ ],
17678
+ "$schema": "https://json-schema.org/draft/2020-12/schema"
17679
+ },
17680
+ "annotations": {
17681
+ "title": "Transparent Commons Proposal Status",
17682
+ "readOnlyHint": true,
17683
+ "destructiveHint": false,
17684
+ "idempotentHint": true,
17685
+ "openWorldHint": false
17686
+ }
17687
+ },
17688
+ {
17689
+ "name": "commons_host_image",
17690
+ "category": "commons",
17691
+ "title": "Host a Transparent Commons Image",
17692
+ "description": "Host an image from a public https URL or base64 bytes, returning a permanent Commons URL. Commons never serves a third-party image URL \u2014 commons_submit_entity hosts external images automatically, so use this only to host one before or independently of a write. JPEG, PNG, GIF, WebP up to 10 MB; SVG rejected. Identical bytes are stored once.",
17693
+ "inputSchema": {
17694
+ "type": "object",
17695
+ "properties": {
17696
+ "sourceUrl": {
17697
+ "description": "Public https image URL to download and host. The wiki never serves a third-party URL directly, so pass the original source here rather than putting it on the entity.",
17698
+ "type": "string",
17699
+ "format": "uri"
17700
+ },
17701
+ "imageBase64": {
17702
+ "description": "Base64 image bytes for an image you already hold. Use for images under about 3 MB; larger files should be published from a URL.",
17703
+ "type": "string",
17704
+ "minLength": 16
17705
+ },
17706
+ "alt": {
17707
+ "description": "Alt text describing the image for readers who cannot see it.",
17708
+ "type": "string",
17709
+ "maxLength": 500
17710
+ },
17711
+ "license": {
17712
+ "description": "License or usage terms of the original image, preserved with the hosted copy.",
17713
+ "type": "string",
17714
+ "maxLength": 240
17715
+ },
17716
+ "attribution": {
17717
+ "description": "Credit line for the original photographer, publication, or archive.",
17718
+ "type": "string",
17719
+ "maxLength": 500
17720
+ }
17721
+ },
17722
+ "$schema": "https://json-schema.org/draft/2020-12/schema"
17723
+ },
17724
+ "annotations": {
17725
+ "title": "Host a Transparent Commons Image",
17726
+ "readOnlyHint": false,
17727
+ "destructiveHint": false,
17728
+ "idempotentHint": true,
17729
+ "openWorldHint": true
17730
+ }
17731
+ },
17732
+ {
17733
+ "name": "commons_update_editorial_article",
17734
+ "category": "commons",
17735
+ "title": "Edit One Transparent Commons Article",
17736
+ "description": "Replace the Markdown of one article in a published edition without resupplying the others: it reads the stored sources, swaps the article you name, and publishes the next revision with the rest byte-identical. Read commons_get_publication with includeArticles first for the current source and revision. commons_publish_editorial is the full-replace path. Requires baseRevision and idempotencyKey.",
17737
+ "inputSchema": {
17738
+ "type": "object",
17739
+ "properties": {
17740
+ "publicationSubdomain": {
17741
+ "type": "string",
17742
+ "minLength": 3,
17743
+ "maxLength": 50,
17744
+ "description": "Publication owned by the authenticated account."
17745
+ },
17746
+ "editionSlug": {
17747
+ "description": "Edition holding the article. Defaults to the publication\u2019s latest edition.",
17748
+ "type": "string",
17749
+ "maxLength": 80,
17750
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
17751
+ },
17752
+ "articleSlug": {
17753
+ "type": "string",
17754
+ "maxLength": 80,
17755
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
17756
+ "description": "Slug of the one article to replace, from commons_get_publication with includeArticles."
17757
+ },
17758
+ "idempotencyKey": {
17759
+ "type": "string",
17760
+ "minLength": 8,
17761
+ "maxLength": 200,
17762
+ "description": "Unique key for this intended edit. Reuse it only when retrying the same edit."
17763
+ },
17764
+ "baseRevision": {
17765
+ "type": "integer",
17766
+ "exclusiveMinimum": 0,
17767
+ "maximum": 9007199254740991,
17768
+ "description": "Current edition revision from commons_get_publication. The edit is refused if the edition moved on."
17769
+ },
17770
+ "markdown": {
17771
+ "description": "Replacement Markdown body for this article. Omit to change only the metadata fields below.",
17772
+ "type": "string",
17773
+ "minLength": 1,
17774
+ "maxLength": 4e5
17775
+ },
17776
+ "title": {
17777
+ "description": "Replacement article title.",
17778
+ "type": "string",
17779
+ "minLength": 1,
17780
+ "maxLength": 180
17781
+ },
17782
+ "summary": {
17783
+ "description": "Replacement one or two sentence summary.",
17784
+ "type": "string",
17785
+ "minLength": 1,
17786
+ "maxLength": 500
17787
+ },
17788
+ "category": {
17789
+ "description": "Replacement section label.",
17790
+ "type": "string",
17791
+ "minLength": 1,
17792
+ "maxLength": 80
17793
+ },
17794
+ "kicker": {
17795
+ "description": "Replacement framing line above the title.",
17796
+ "type": "string",
17797
+ "minLength": 1,
17798
+ "maxLength": 140
17799
+ },
17800
+ "order": {
17801
+ "description": "Replacement reading-order position.",
17802
+ "type": "integer",
17803
+ "minimum": 1,
17804
+ "maximum": 1e3
17805
+ }
17806
+ },
17807
+ "required": [
17808
+ "publicationSubdomain",
17809
+ "articleSlug",
17810
+ "idempotencyKey",
17811
+ "baseRevision"
17812
+ ],
17813
+ "$schema": "https://json-schema.org/draft/2020-12/schema"
17814
+ },
17815
+ "annotations": {
17816
+ "title": "Edit One Transparent Commons Article",
17817
+ "readOnlyHint": false,
17818
+ "destructiveHint": false,
17819
+ "idempotentHint": true,
17820
+ "openWorldHint": true
17821
+ }
17619
17822
  }
17620
17823
  ];
17621
17824
  var MCP_TOOL_NAMES = MCP_TOOL_CATALOG.map((tool) => tool.name);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcpscraper-cli",
3
- "version": "0.26.0",
3
+ "version": "0.27.0",
4
4
  "description": "Command-line interface for mcpscraper.dev and memory.mcpscraper.dev",
5
5
  "license": "MIT",
6
6
  "type": "module",