@page2ai/mcp 0.2.8 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,55 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and
5
5
  project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html); while the
6
6
  major version is `0`, a minor bump may carry breaking changes.
7
7
 
8
+ ## 0.3.1 - 2026-10-17
9
+
10
+ ### Fixed
11
+ - **`@page2ai/core` 0.2.1: interface buttons no longer print as text** (P2A-019), and the dependency range starts
12
+ there (`^0.2.1`, was `^0.2.0`). The header's «Copy page» with the glyph of its icon and the code-sample switcher
13
+ («cURL …») of Mintlify, Vercel and Claude docs pages are gone from the tool's output; buttons that hold the page's
14
+ own text stay (an accordion's question, a table column's name, a word of a sentence: core CHANGELOG, 0.2.1).
15
+ The range moves because `npx` reuses a cached install while the server's own version stays the same: measured on
16
+ 2026-10-18 with an npx cache filled before core 0.2.1 came out, `npx -y page2ai-mcp` (0.3.0) still ran core
17
+ 0.2.0 after the release, and a cold cache ran 0.2.1.
18
+ - README: the example output is a new capture on core 0.2.1, without the buttons.
19
+
20
+ ## 0.3.0 - 2026-10-17
21
+
22
+ ### Changed (breaking)
23
+ - **`@page2ai/core` 0.2.0: the server reads only the page you name** (BL-49), and the dependency
24
+ range starts there (`^0.2.0`, was `^0.1.13`). It no longer asks for `<url>.md` first, and its
25
+ Accept header is the one Firefox sends when it opens a page, so Fumadocs, Mintlify, Vercel,
26
+ Supabase, Cloudflare, Stripe and the Claude docs answer with the HTML page instead of their own
27
+ Markdown copy, which can be older than the page. Measured live on 2026-10-17 with core 0.1.13
28
+ (what 0.2.8 runs) against 0.2.0: on those seven platforms 0.2.8 returned the copy and 0.3.0
29
+ converts the page, 1,301 to 57,887 characters, with every heading and code block of the copy
30
+ except navigation lists and Cloudflare's JSON-LD (core CHANGELOG, 0.2.0). Content that Mintlify
31
+ shows only to agents (`<Visibility for="agents">`) is gone, and what the page shows people is
32
+ there, buttons inside the article included («Copy page», «cURL» on Mintlify, Vercel and the
33
+ Claude docs).
34
+ - **Markdown sent for a page address is an error.** The request asks for HTML, so a server that
35
+ still answers `text/markdown` picked its copy by something else (User-Agent, a cache). The tool
36
+ returns `isError` with "Fetch failed: the server answered with Markdown ... for a page address",
37
+ where 0.2.8 returned the copy as the page.
38
+ - `extractor_source` in the frontmatter is `markdown-response` for a Markdown or text file;
39
+ `md-suffix` and `content-negotiation` no longer occur.
40
+
41
+ ### Fixed
42
+ - **A Markdown or text file comes back as written.** A URL that names a `.md`, `.markdown`,
43
+ `.mdown`, `.mkd`, `.mdx` or `.txt` file is returned as is whether the server sends
44
+ `text/markdown`, `text/x-markdown`, `text/plain` or `application/octet-stream`. In 0.2.8 a
45
+ `README.md` from raw.githubusercontent.com came out as one line from the middle of the file
46
+ (3,468 of 11,408 characters, no heading), and an `llms.txt` lost its line breaks.
47
+ - **What the server says about itself matches the page-only fetch.** The tool description no
48
+ longer says it tries `URL.md` first, and the MCPB manifest no longer says it requests a `.md`
49
+ twin. PRIVACY.md said the server requests only the URLs you pass, while up to 0.2.8 it also
50
+ requested `<url>.md`; it now says so, and its source links point at this repository and core
51
+ instead of a directory of the extension's.
52
+ - README: the extension converts pages with its own pipeline, not `@page2ai/core` (BACKLOG
53
+ BL-47), and the example output is a new capture on core 0.2.0.
54
+ - Lockfile: of what the server runs, only `@page2ai/core` moves (0.1.13 to 0.2.0);
55
+ `@modelcontextprotocol/server` and `/core` stay 2.3.1, `zod` 4.5.4, `linkedom` 0.18.13.
56
+
8
57
  ## 0.2.8 - 2026-10-16
9
58
 
10
59
  ### Changed
package/PRIVACY.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Page2AI MCP Server — Privacy Policy
2
2
 
3
- **Last updated:** 2026-07-23
3
+ **Last updated:** 2026-10-17
4
4
  **Applies to:** `@page2ai/mcp` npm package v0.1.0+
5
5
 
6
6
  ## What data this MCP server collects
@@ -9,7 +9,7 @@
9
9
 
10
10
  `@page2ai/mcp` is a stateless local Node.js process. When invoked with a URL:
11
11
 
12
- 1. It fetches the URL via Node's built-in `fetch()` API
12
+ 1. It fetches the URL via Node's built-in `fetch()` API, following its redirects
13
13
  2. Parses the HTML response via [linkedom](https://github.com/WebReflection/linkedom) (a lightweight in-memory DOM parser)
14
14
  3. Extracts main content and converts it to Markdown
15
15
  4. Returns the Markdown to the calling MCP client (Claude Desktop, Cursor, Windsurf, Zed, VS Code, etc.)
@@ -27,7 +27,7 @@ The MCP client (Claude Desktop, Cursor, etc.) that invokes `@page2ai/mcp` may lo
27
27
 
28
28
  ## Network communication
29
29
 
30
- `@page2ai/mcp` makes outbound HTTP/HTTPS requests only to the URLs explicitly provided as tool arguments. It makes no other network calls. It does not phone home, does not check for updates over the network, and does not send crash reports.
30
+ `@page2ai/mcp` makes outbound HTTP/HTTPS requests only to the URL given as the tool argument and to the addresses its redirects lead to, each checked by the SSRF guard. It makes no other network calls. Up to 0.2.8 it also requested that URL with `.md` appended, on the same site, and its Accept header asked for Markdown, so a docs platform could answer with its own Markdown copy of the page; since 0.3.0 it asks for the page as a browser does. It does not phone home, does not check for updates over the network, and does not send crash reports.
31
31
 
32
32
  ## Authentication
33
33
 
@@ -36,7 +36,8 @@ The MCP client (Claude Desktop, Cursor, etc.) that invokes `@page2ai/mcp` may lo
36
36
  ## Source code and audit
37
37
 
38
38
  The full source code is available at:
39
- - https://github.com/igorsaevets/page2ai-extension (in the `packages/mcp/` directory once published)
39
+ - https://github.com/igorsaevets/page2ai-mcp (this server)
40
+ - https://github.com/igorsaevets/page2ai-core (`@page2ai/core`, the library it runs)
40
41
 
41
42
  Users can audit the source code to verify these privacy claims.
42
43
 
package/README.md CHANGED
@@ -13,8 +13,9 @@ bots, and this README only shows numbers a human can trust.</sub>
13
13
  > Fetch, extract, convert — one tool, one command, entirely on your machine.
14
14
  > No API key, no account, no telemetry; the only network requests are to the URLs you pass it.
15
15
 
16
- Companion to the [Page2AI Chrome & Firefox extensions](https://github.com/igorsaevets/page2ai-extension);
17
- both share the same [`@page2ai/core`](https://npmjs.com/package/@page2ai/core) extraction library.
16
+ Companion to the [Page2AI Chrome & Firefox extensions](https://github.com/igorsaevets/page2ai-extension),
17
+ which convert the live page in your own browser with their own pipeline. This server is built on
18
+ [`@page2ai/core`](https://npmjs.com/package/@page2ai/core).
18
19
 
19
20
  ## Quick start
20
21
 
@@ -175,30 +176,42 @@ command per client and a verification step.
175
176
  ## What a call returns
176
177
 
177
178
  Verbatim output of `page_to_markdown(url="https://docs.anthropic.com/en/api/messages")`,
178
- captured 2026-08-29 on core 0.1.7, truncated:
179
+ captured 2026-10-18 with core 0.2.1, truncated:
179
180
 
180
181
  ```markdown
181
182
  ---
182
183
  title: "Messages"
183
184
  source: "https://platform.claude.com/docs/en/api/messages"
184
- captured_at: "2026-08-29T09:01:05.806Z"
185
+ captured_at: "2026-10-18T04:33:07.670Z"
186
+ language: "en"
187
+ description: "API reference for Messages endpoints"
188
+ canonical: "https://platform.claude.com/docs/en/api/messages"
189
+ og_title: "Messages - Claude API Reference"
185
190
  extractor: "page2ai-core"
186
- extractor_version: "0.1.7"
187
- extractor_source: "content-negotiation"
191
+ extractor_version: "0.2.1"
188
192
  ---
193
+
189
194
  # Messages
190
195
 
191
- ## Create a Message
196
+
197
+
198
+ A beta version of this API exists and may have additional functionality. [View the beta version](https://platform.claude.com/docs/en/api/http/beta/messages).
199
+
200
+ 1. [API reference](https://platform.claude.com/docs/en/api/http)
201
+
202
+ ##### [Create a Message](https://platform.claude.com/docs/en/api/http/messages/create)
192
203
 
193
- **POST** `/v1/messages`
204
+ POST /v1/messages
194
205
 
195
- Send a structured list of input messages with text and/or image content, and the
196
- model will generate the next message in the conversation.
206
+ Send a structured list of input messages with text and/or image content, and the model will generate the next message in the conversation.
197
207
  ```
198
208
 
199
- YAML front matter (title, source, capture timestamp, extractor provenance), then the
200
- article as clean Markdown — headings, tables and fenced code preserved, navigation and
201
- chrome dropped.
209
+ YAML front matter (title, source, capture timestamp, page metadata, extractor provenance),
210
+ then the page as Markdown: headings, tables and fenced code preserved; navigation, header,
211
+ footer and sidebars dropped. Interface buttons are left out (core 0.2.1); up to 0.3.0 this page also printed «Copy page»
212
+ (with the glyph of its icon) and the «cURL» code-sample switcher, each twice. Up to 0.2.8 this URL returned the site's own
213
+ Markdown copy (`extractor_source: "content-negotiation"`); since 0.3.0 the server reads only
214
+ the page.
202
215
 
203
216
  ## Configuration
204
217
 
@@ -315,7 +328,7 @@ MIT — see [LICENSE](./LICENSE). Copyright © 2026 Igor Saevets.
315
328
 
316
329
  ## Related
317
330
 
318
- - **Page2AI Chrome extension** — https://github.com/igorsaevets/page2ai-extension (same extraction core, distributed as a browser extension for humans)
319
- - **@page2ai/core** — https://npmjs.com/package/@page2ai/core (the shared extraction library)
331
+ - **Page2AI Chrome extension** — https://github.com/igorsaevets/page2ai-extension (a browser extension for humans, with its own extraction pipeline)
332
+ - **@page2ai/core** — https://npmjs.com/package/@page2ai/core (the extraction library this server runs)
320
333
  - **page2ai-mcp** (unscoped) — https://npmjs.com/package/page2ai-mcp (thin wrapper around this package, published so `npx -y page2ai-mcp` works without a scope prefix)
321
334
  - **Software Heritage archive** — SWHID `swh:1:snp:05123c51ef9e7c0aeb06f42b1263c07a8d26999a`
@@ -1 +1 @@
1
- {"version":3,"file":"page-to-markdown.d.ts","sourceRoot":"","sources":["../../src/tools/page-to-markdown.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;;;iBAapC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAG5E,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAElD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDpC,CAAC;AASF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,OAAO,KAChB,OAAO,CAAC,oBAAoB,CAkC9B,CAAC"}
1
+ {"version":3,"file":"page-to-markdown.d.ts","sourceRoot":"","sources":["../../src/tools/page-to-markdown.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;;;iBAapC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAG5E,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAElD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDpC,CAAC;AASF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,OAAO,KAChB,OAAO,CAAC,oBAAoB,CAkC9B,CAAC"}
@@ -1,7 +1,8 @@
1
1
  // page_to_markdown tool: fetches a URL and returns clean Markdown for LLM context.
2
2
  // Uses @page2ai/core under the hood — inherits SSRF protection, 10MB size cap,
3
- // 15s AbortController timeout, `.md`-first attempt (Mintlify convention), and
4
- // static tab discovery (emits `### Tab: {label}` sections for docs sites).
3
+ // 15s AbortController timeout, the page-only fetch (no `.md` twin, a browser's
4
+ // Accept header; core 0.2.0, BL-49), and static tab discovery (emits
5
+ // `### Tab: {label}` sections for docs sites).
5
6
  import { fetchAndConvert, SsrfBlockedError, FetchProtectionError } from '@page2ai/core';
6
7
  import { z } from 'zod';
7
8
  export const pageToMarkdownInputSchema = z.object({
@@ -18,8 +19,9 @@ export const pageToMarkdownDefinition = {
18
19
  'main content and drops navigation, headers, footers, and sidebars. It fetches without ' +
19
20
  'cookies and runs no page scripts, so a page behind a sign-in or one rendered only by ' +
20
21
  'JavaScript comes back as its login page or with no content; read those through a browser ' +
21
- 'tool instead. For Mintlify docs (docs.anthropic.com, OpenAI platform, ' +
22
- 'Vercel, Stripe, etc.) tries the `URL.md` convention first for cleanest output. ' +
22
+ 'tool instead. It requests only the URL given, as a browser opens a page, so docs sites ' +
23
+ 'return the page itself, not a Markdown copy of it; a URL that names a Markdown or text ' +
24
+ 'file (a raw GitHub README.md, an llms.txt) comes back as written. ' +
23
25
  'Discovers tab groups statically and emits each panel as a `### Tab: {label}` section ' +
24
26
  'instead of concatenating (prevents Python+TypeScript examples merging into one broken block). ' +
25
27
  'Zero external API calls — parses locally via linkedom.',
@@ -1 +1 @@
1
- {"version":3,"file":"page-to-markdown.js","sourceRoot":"","sources":["../../src/tools/page-to-markdown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page-to-markdown.js","sourceRoot":"","sources":["../../src/tools/page-to-markdown.ts"],"names":[],"mappings":"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"}
package/manifest.json CHANGED
@@ -2,9 +2,9 @@
2
2
  "manifest_version": "0.3",
3
3
  "name": "page2ai-mcp",
4
4
  "display_name": "Page2AI — Web to Markdown",
5
- "version": "0.2.8",
5
+ "version": "0.3.1",
6
6
  "description": "Convert any web page to clean Markdown for LLM context",
7
- "long_description": "Page2AI MCP converts a web page URL to Markdown for AI context windows. It keeps the page's main content (its <main> or dominant <article>), preserves code blocks with language hints, converts tables and lists, and drops navigation, headers, footers and sidebars. The only network requests go to the URL you pass it and its .md twin, which docs platforms such as Mintlify serve: pure Node + linkedom, no browser, no cookies, no page scripts, no external services, no telemetry. A page behind a sign-in, or one rendered only by JavaScript, is therefore out of its reach.\n\nCompanion to the Page2AI browser extension (https://github.com/igorsaevets/page2ai-extension), which converts the live page in your own browser, including pages behind a sign-in. Built on the open-source @page2ai/core library.",
7
+ "long_description": "Page2AI MCP converts a web page URL to Markdown for AI context windows. It keeps the page's main content (its <main> or dominant <article>), preserves code blocks with language hints, converts tables and lists, and drops navigation, headers, footers and sidebars. The only network requests go to the URL you pass it and the addresses it redirects to, asked for as a browser opens a page, so docs platforms return the page itself rather than a Markdown copy of it: pure Node + linkedom, no browser, no cookies, no page scripts, no external services, no telemetry. A page behind a sign-in, or one rendered only by JavaScript, is therefore out of its reach.\n\nCompanion to the Page2AI browser extension (https://github.com/igorsaevets/page2ai-extension), which converts the live page in your own browser, including pages behind a sign-in. Built on the open-source @page2ai/core library.",
8
8
  "author": {
9
9
  "name": "Igor Saevets",
10
10
  "url": "https://github.com/igorsaevets"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@page2ai/mcp",
3
- "version": "0.2.8",
3
+ "version": "0.3.1",
4
4
  "mcpName": "io.github.igorsaevets/page2ai-mcp",
5
5
  "description": "MCP server that converts any web page URL to clean Markdown for LLM context. Processing is local and SSRF-guarded; no external APIs, no telemetry.",
6
6
  "type": "module",
@@ -35,7 +35,7 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@modelcontextprotocol/server": "^2.0.0",
38
- "@page2ai/core": "^0.1.13",
38
+ "@page2ai/core": "^0.2.1",
39
39
  "zod": "^4.2.0"
40
40
  },
41
41
  "devDependencies": {
package/server.json CHANGED
@@ -8,12 +8,12 @@
8
8
  "source": "github"
9
9
  },
10
10
  "websiteUrl": "https://github.com/igorsaevets/page2ai-mcp#readme",
11
- "version": "0.2.8",
11
+ "version": "0.3.1",
12
12
  "packages": [
13
13
  {
14
14
  "registryType": "npm",
15
15
  "identifier": "@page2ai/mcp",
16
- "version": "0.2.8",
16
+ "version": "0.3.1",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  }