metalift-langchain 1.0.0__tar.gz
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.
- metalift_langchain-1.0.0/LICENSE +74 -0
- metalift_langchain-1.0.0/PKG-INFO +66 -0
- metalift_langchain-1.0.0/README.md +38 -0
- metalift_langchain-1.0.0/metalift_langchain/__init__.py +34 -0
- metalift_langchain-1.0.0/metalift_langchain.egg-info/PKG-INFO +66 -0
- metalift_langchain-1.0.0/metalift_langchain.egg-info/SOURCES.txt +9 -0
- metalift_langchain-1.0.0/metalift_langchain.egg-info/dependency_links.txt +1 -0
- metalift_langchain-1.0.0/metalift_langchain.egg-info/requires.txt +2 -0
- metalift_langchain-1.0.0/metalift_langchain.egg-info/top_level.txt +1 -0
- metalift_langchain-1.0.0/pyproject.toml +40 -0
- metalift_langchain-1.0.0/setup.cfg +4 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
Proprietary License — Maximum restriction
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Metalift. All rights reserved.
|
|
4
|
+
|
|
5
|
+
NOTICE: This software and all associated materials (source code, object code,
|
|
6
|
+
documentation, configuration, designs, and data) are proprietary and confidential.
|
|
7
|
+
No license or right is granted except as expressly set forth below.
|
|
8
|
+
|
|
9
|
+
1. NO GRANT OF RIGHTS
|
|
10
|
+
|
|
11
|
+
Except as expressly authorized in a separate written agreement signed by
|
|
12
|
+
Metalift, you are granted NO rights to use, copy, modify, merge, publish,
|
|
13
|
+
distribute, sublicense, sell, rent, lease, lend, disclose, or otherwise
|
|
14
|
+
transfer this software or any part thereof.
|
|
15
|
+
|
|
16
|
+
2. RESTRICTED ACTIVITIES
|
|
17
|
+
|
|
18
|
+
Without prior written consent from Metalift, you may NOT:
|
|
19
|
+
|
|
20
|
+
(a) access, use, or run the software in any environment;
|
|
21
|
+
(b) copy, reproduce, or duplicate the software or documentation;
|
|
22
|
+
(c) modify, adapt, translate, or create derivative works;
|
|
23
|
+
(d) reverse engineer, decompile, disassemble, or attempt to derive source
|
|
24
|
+
code, algorithms, or trade secrets;
|
|
25
|
+
(e) remove, alter, or obscure proprietary notices or labels;
|
|
26
|
+
(f) distribute, publish, or make the software available to any third party;
|
|
27
|
+
(g) use the software to develop, train, or improve competing products or
|
|
28
|
+
services;
|
|
29
|
+
(h) benchmark, scrape, or systematically extract outputs for redistribution;
|
|
30
|
+
(i) sublicense, assign, or transfer any rights under this notice.
|
|
31
|
+
|
|
32
|
+
3. CONFIDENTIALITY
|
|
33
|
+
|
|
34
|
+
The software constitutes confidential information of Metalift. You must
|
|
35
|
+
protect it using at least the same degree of care you use for your own
|
|
36
|
+
confidential information, and in no event less than reasonable care.
|
|
37
|
+
|
|
38
|
+
4. THIRD-PARTY COMPONENTS
|
|
39
|
+
|
|
40
|
+
Third-party open-source components, if any, remain subject to their
|
|
41
|
+
respective licenses. This notice does not restrict use of those components
|
|
42
|
+
as permitted by their licenses, but does not grant additional rights to
|
|
43
|
+
Metalift proprietary code.
|
|
44
|
+
|
|
45
|
+
5. TERMINATION
|
|
46
|
+
|
|
47
|
+
Any unauthorized use automatically terminates any permission that may have
|
|
48
|
+
been granted. Upon termination, you must destroy all copies of the software
|
|
49
|
+
and certify destruction if requested.
|
|
50
|
+
|
|
51
|
+
6. DISCLAIMER OF WARRANTY
|
|
52
|
+
|
|
53
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
54
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
55
|
+
FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT.
|
|
56
|
+
|
|
57
|
+
7. LIMITATION OF LIABILITY
|
|
58
|
+
|
|
59
|
+
IN NO EVENT SHALL METALIFT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
|
|
60
|
+
CONSEQUENTIAL, OR PUNITIVE DAMAGES, OR ANY LOSS OF PROFITS, DATA, GOODWILL,
|
|
61
|
+
OR BUSINESS INTERRUPTION, ARISING FROM OR RELATED TO THE SOFTWARE, WHETHER
|
|
62
|
+
IN CONTRACT, TORT, OR OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
|
63
|
+
DAMAGES. METALIFT'S TOTAL LIABILITY SHALL NOT EXCEED THE AMOUNT PAID BY YOU
|
|
64
|
+
TO METALIFT FOR AUTHORIZED ACCESS IN THE TWELVE (12) MONTHS PRECEDING THE
|
|
65
|
+
CLAIM, OR ONE HUNDRED U.S. DOLLARS (USD $100) IF NO SUCH PAYMENT WAS MADE.
|
|
66
|
+
|
|
67
|
+
8. GOVERNING LAW
|
|
68
|
+
|
|
69
|
+
This notice is governed by the laws applicable where Metalift is organized,
|
|
70
|
+
without regard to conflict-of-law principles.
|
|
71
|
+
|
|
72
|
+
9. CONTACT
|
|
73
|
+
|
|
74
|
+
For licensing inquiries: legal@metalift.ai
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: metalift-langchain
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: LangChain tools for the Metalift web context API
|
|
5
|
+
Author-email: Metalift <support@metalift.ai>
|
|
6
|
+
License-Expression: LicenseRef-Proprietary
|
|
7
|
+
Project-URL: Homepage, https://metalift.ai
|
|
8
|
+
Project-URL: Documentation, https://metalift.ai/docs
|
|
9
|
+
Project-URL: Repository, https://github.com/Endacoder/scraper-mcp
|
|
10
|
+
Project-URL: Issues, https://github.com/Endacoder/scraper-mcp/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/Endacoder/scraper-mcp/releases
|
|
12
|
+
Keywords: metalift,langchain,scraping,agents,tools
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
21
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
|
+
Requires-Python: >=3.11
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: langchain-core>=0.3.0
|
|
26
|
+
Requires-Dist: metalift-sdk<2,>=1.0.0
|
|
27
|
+
Dynamic: license-file
|
|
28
|
+
|
|
29
|
+
# Metalift LangChain integration
|
|
30
|
+
|
|
31
|
+
LangChain tools for [Metalift](https://app.metalift.ai) — a hosted web context API that turns URLs into LLM-ready markdown for agents. This package wraps the Metalift REST API; it does not use `@langchain/community` `RecursiveUrlLoader` or any local server-side HTTP fetch of user-supplied URLs.
|
|
32
|
+
|
|
33
|
+
## Get an API key
|
|
34
|
+
|
|
35
|
+
1. [Sign up for Metalift Cloud](https://app.metalift.ai/signup) and verify your email.
|
|
36
|
+
2. Complete onboarding on the [dashboard](https://app.metalift.ai/dashboard).
|
|
37
|
+
3. Copy your API key from [Dashboard → API keys](https://app.metalift.ai/dashboard/keys).
|
|
38
|
+
|
|
39
|
+
New accounts receive **1,000 free credits/month** on the Free tier. Use the hosted API at `https://api.metalift.ai`, or point `api_url` at your own self-hosted scrape API.
|
|
40
|
+
|
|
41
|
+
Do not commit API keys into source code — pass them at runtime or via the `METALIFT_API_KEY` environment variable.
|
|
42
|
+
|
|
43
|
+
## Security
|
|
44
|
+
|
|
45
|
+
- All URL fetching runs on the Metalift scrape API with SSRF guards: manual redirect validation, private/metadata IP blocklist, DNS pinning, and Playwright egress isolation.
|
|
46
|
+
- Do **not** use LangChain's built-in `RecursiveUrlLoader` (or similar loaders with automatic redirect following) for untrusted URLs — see [CVE-2026-27795](https://cvereports.com/reports/CVE-2026-27795) and [Metalift security](../../docs/security.md).
|
|
47
|
+
|
|
48
|
+
## Usage
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
pip install metalift-langchain
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
from metalift_langchain import get_metalift_tools
|
|
56
|
+
|
|
57
|
+
tools = get_metalift_tools(api_url="https://api.metalift.ai", api_key="YOUR_API_KEY")
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Requires the `metalift-sdk` package and a reachable Metalift scrape API.
|
|
61
|
+
|
|
62
|
+
## Links
|
|
63
|
+
|
|
64
|
+
- [Documentation](https://app.metalift.ai/docs)
|
|
65
|
+
- [Getting started](https://app.metalift.ai/docs/getting-started)
|
|
66
|
+
- [Support](mailto:support@metalift.ai)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Metalift LangChain integration
|
|
2
|
+
|
|
3
|
+
LangChain tools for [Metalift](https://app.metalift.ai) — a hosted web context API that turns URLs into LLM-ready markdown for agents. This package wraps the Metalift REST API; it does not use `@langchain/community` `RecursiveUrlLoader` or any local server-side HTTP fetch of user-supplied URLs.
|
|
4
|
+
|
|
5
|
+
## Get an API key
|
|
6
|
+
|
|
7
|
+
1. [Sign up for Metalift Cloud](https://app.metalift.ai/signup) and verify your email.
|
|
8
|
+
2. Complete onboarding on the [dashboard](https://app.metalift.ai/dashboard).
|
|
9
|
+
3. Copy your API key from [Dashboard → API keys](https://app.metalift.ai/dashboard/keys).
|
|
10
|
+
|
|
11
|
+
New accounts receive **1,000 free credits/month** on the Free tier. Use the hosted API at `https://api.metalift.ai`, or point `api_url` at your own self-hosted scrape API.
|
|
12
|
+
|
|
13
|
+
Do not commit API keys into source code — pass them at runtime or via the `METALIFT_API_KEY` environment variable.
|
|
14
|
+
|
|
15
|
+
## Security
|
|
16
|
+
|
|
17
|
+
- All URL fetching runs on the Metalift scrape API with SSRF guards: manual redirect validation, private/metadata IP blocklist, DNS pinning, and Playwright egress isolation.
|
|
18
|
+
- Do **not** use LangChain's built-in `RecursiveUrlLoader` (or similar loaders with automatic redirect following) for untrusted URLs — see [CVE-2026-27795](https://cvereports.com/reports/CVE-2026-27795) and [Metalift security](../../docs/security.md).
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pip install metalift-langchain
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
from metalift_langchain import get_metalift_tools
|
|
28
|
+
|
|
29
|
+
tools = get_metalift_tools(api_url="https://api.metalift.ai", api_key="YOUR_API_KEY")
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Requires the `metalift-sdk` package and a reachable Metalift scrape API.
|
|
33
|
+
|
|
34
|
+
## Links
|
|
35
|
+
|
|
36
|
+
- [Documentation](https://app.metalift.ai/docs)
|
|
37
|
+
- [Getting started](https://app.metalift.ai/docs/getting-started)
|
|
38
|
+
- [Support](mailto:support@metalift.ai)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""LangChain tool integration for Metalift."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from langchain_core.tools import BaseTool
|
|
8
|
+
from pydantic import BaseModel, Field
|
|
9
|
+
|
|
10
|
+
from metalift_sdk import Metalift
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ScrapeInput(BaseModel):
|
|
14
|
+
url: str = Field(description="URL to scrape")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class MetaliftScrapeTool(BaseTool):
|
|
18
|
+
name: str = "metalift_scrape"
|
|
19
|
+
description: str = "Scrape a URL and return LLM-ready markdown content."
|
|
20
|
+
args_schema: type[BaseModel] = ScrapeInput
|
|
21
|
+
client: Metalift = Field(default_factory=Metalift)
|
|
22
|
+
|
|
23
|
+
def _run(self, url: str) -> str:
|
|
24
|
+
result = self.client.scrape(url, formats=["markdown"])
|
|
25
|
+
data = result.get("data", {})
|
|
26
|
+
return data.get("markdown") or str(data)
|
|
27
|
+
|
|
28
|
+
async def _arun(self, url: str) -> str:
|
|
29
|
+
return self._run(url)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def get_metalift_tools(api_url: str | None = None, api_key: str | None = None) -> list[Any]:
|
|
33
|
+
client = Metalift(api_url=api_url, api_key=api_key)
|
|
34
|
+
return [MetaliftScrapeTool(client=client)]
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: metalift-langchain
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: LangChain tools for the Metalift web context API
|
|
5
|
+
Author-email: Metalift <support@metalift.ai>
|
|
6
|
+
License-Expression: LicenseRef-Proprietary
|
|
7
|
+
Project-URL: Homepage, https://metalift.ai
|
|
8
|
+
Project-URL: Documentation, https://metalift.ai/docs
|
|
9
|
+
Project-URL: Repository, https://github.com/Endacoder/scraper-mcp
|
|
10
|
+
Project-URL: Issues, https://github.com/Endacoder/scraper-mcp/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/Endacoder/scraper-mcp/releases
|
|
12
|
+
Keywords: metalift,langchain,scraping,agents,tools
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
21
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
|
+
Requires-Python: >=3.11
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: langchain-core>=0.3.0
|
|
26
|
+
Requires-Dist: metalift-sdk<2,>=1.0.0
|
|
27
|
+
Dynamic: license-file
|
|
28
|
+
|
|
29
|
+
# Metalift LangChain integration
|
|
30
|
+
|
|
31
|
+
LangChain tools for [Metalift](https://app.metalift.ai) — a hosted web context API that turns URLs into LLM-ready markdown for agents. This package wraps the Metalift REST API; it does not use `@langchain/community` `RecursiveUrlLoader` or any local server-side HTTP fetch of user-supplied URLs.
|
|
32
|
+
|
|
33
|
+
## Get an API key
|
|
34
|
+
|
|
35
|
+
1. [Sign up for Metalift Cloud](https://app.metalift.ai/signup) and verify your email.
|
|
36
|
+
2. Complete onboarding on the [dashboard](https://app.metalift.ai/dashboard).
|
|
37
|
+
3. Copy your API key from [Dashboard → API keys](https://app.metalift.ai/dashboard/keys).
|
|
38
|
+
|
|
39
|
+
New accounts receive **1,000 free credits/month** on the Free tier. Use the hosted API at `https://api.metalift.ai`, or point `api_url` at your own self-hosted scrape API.
|
|
40
|
+
|
|
41
|
+
Do not commit API keys into source code — pass them at runtime or via the `METALIFT_API_KEY` environment variable.
|
|
42
|
+
|
|
43
|
+
## Security
|
|
44
|
+
|
|
45
|
+
- All URL fetching runs on the Metalift scrape API with SSRF guards: manual redirect validation, private/metadata IP blocklist, DNS pinning, and Playwright egress isolation.
|
|
46
|
+
- Do **not** use LangChain's built-in `RecursiveUrlLoader` (or similar loaders with automatic redirect following) for untrusted URLs — see [CVE-2026-27795](https://cvereports.com/reports/CVE-2026-27795) and [Metalift security](../../docs/security.md).
|
|
47
|
+
|
|
48
|
+
## Usage
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
pip install metalift-langchain
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
from metalift_langchain import get_metalift_tools
|
|
56
|
+
|
|
57
|
+
tools = get_metalift_tools(api_url="https://api.metalift.ai", api_key="YOUR_API_KEY")
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Requires the `metalift-sdk` package and a reachable Metalift scrape API.
|
|
61
|
+
|
|
62
|
+
## Links
|
|
63
|
+
|
|
64
|
+
- [Documentation](https://app.metalift.ai/docs)
|
|
65
|
+
- [Getting started](https://app.metalift.ai/docs/getting-started)
|
|
66
|
+
- [Support](mailto:support@metalift.ai)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
metalift_langchain/__init__.py
|
|
5
|
+
metalift_langchain.egg-info/PKG-INFO
|
|
6
|
+
metalift_langchain.egg-info/SOURCES.txt
|
|
7
|
+
metalift_langchain.egg-info/dependency_links.txt
|
|
8
|
+
metalift_langchain.egg-info/requires.txt
|
|
9
|
+
metalift_langchain.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
metalift_langchain
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "metalift-langchain"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "LangChain tools for the Metalift web context API"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = "LicenseRef-Proprietary"
|
|
12
|
+
license-files = ["LICENSE"]
|
|
13
|
+
authors = [{ name = "Metalift", email = "support@metalift.ai" }]
|
|
14
|
+
keywords = ["metalift", "langchain", "scraping", "agents", "tools"]
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Development Status :: 5 - Production/Stable",
|
|
17
|
+
"Intended Audience :: Developers",
|
|
18
|
+
"Operating System :: OS Independent",
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Programming Language :: Python :: 3.11",
|
|
21
|
+
"Programming Language :: Python :: 3.12",
|
|
22
|
+
"Programming Language :: Python :: 3.13",
|
|
23
|
+
"Topic :: Internet :: WWW/HTTP",
|
|
24
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
25
|
+
]
|
|
26
|
+
dependencies = [
|
|
27
|
+
"langchain-core>=0.3.0",
|
|
28
|
+
"metalift-sdk>=1.0.0,<2",
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
[project.urls]
|
|
32
|
+
Homepage = "https://metalift.ai"
|
|
33
|
+
Documentation = "https://metalift.ai/docs"
|
|
34
|
+
Repository = "https://github.com/Endacoder/scraper-mcp"
|
|
35
|
+
Issues = "https://github.com/Endacoder/scraper-mcp/issues"
|
|
36
|
+
Changelog = "https://github.com/Endacoder/scraper-mcp/releases"
|
|
37
|
+
|
|
38
|
+
[tool.setuptools.packages.find]
|
|
39
|
+
where = ["."]
|
|
40
|
+
include = ["metalift_langchain*"]
|