Entropy0 Python SDK — pre-ingestion source trust for AI agents
Project description
entropy0
Python SDK for Entropy0 — pre-ingestion source trust for AI agents.
pip install entropy0
What it does
Entropy0 evaluates source-level infrastructure signals before an agent fetches an external URL. One call before requests.get() or httpx.get() returns whether the source is allowed to fetch under your selected policy.
Quick start
import os
from entropy0 import Entropy0Client
client = Entropy0Client() # reads ENTROPY0_API_KEY from env
result = client.decide("github.com")
print(result.action) # "proceed"
print(result.scores.trust) # 96
print(result.should_fetch) # True
result = client.decide("githvb.com")
print(result.action) # "deny"
print(result.reason_codes) # ["BRAND_MISMATCH", "NEWLY_REGISTERED_DOMAIN"]
print(result.should_fetch) # False
Get an API key at entropy0.ai/signup. The Developer plan is free.
Actions
| Action | Meaning |
|---|---|
proceed |
Source infrastructure posture is consistent with normal automated interaction |
proceed_with_caution |
Acceptable; keep interaction read-only |
sandbox |
Elevated signals; interact only in a constrained environment |
escalate_to_human |
Ambiguous or high-risk; request human review |
deny |
Infrastructure posture is inconsistent with safe automated interaction |
result.should_fetch is True for proceed and proceed_with_caution.
result.is_allowed and result.is_safe are aliases for the same check.
should_fetch/is_allowed/is_safereflect whether the recommended action allows automated fetch under the selected policy. They are not a guarantee that the source or page content is safe.
Usage
Sync client
from entropy0 import Entropy0Client
with Entropy0Client(api_key="sk_ent0_...") as client:
result = client.decide("example.com")
if result.should_fetch:
# fetch the URL
...
else:
print(f"Blocked ({result.action}): {result.reason_codes}")
Async client
from entropy0 import AsyncEntropy0Client
async with AsyncEntropy0Client() as client:
result = await client.decide("example.com")
Batch
results = client.batch(["github.com", "githvb.com", "pypi.org"])
for r in results:
print(r.target_value, r.action, r.scores.trust)
URL evaluation (Team+ plans)
decide_url passes the full URL path to the API. On Developer/free plans it automatically falls back to domain evaluation.
result = client.decide_url("https://github.com/user/repo/raw/main/script.sh")
Interaction context
The defaults (fetch / read_only / medium / balanced) are suitable for most RAG pipelines. Override when needed:
result = client.decide(
"example.com",
interaction_kind="api_call",
interaction_mode="read_write",
interaction_sensitivity="high",
policy_profile="strict",
)
LangChain example
from langchain_core.tools import tool
from entropy0 import Entropy0Client, SAFE_ACTIONS
_client = Entropy0Client()
@tool
def entropy0_decide(url: str) -> str:
"""
Call this before fetching, reading, summarizing, citing, or acting on
any external URL or domain. If the returned action is not 'proceed' or
'proceed_with_caution', do NOT call fetch_url — report the action and
reason_codes to the user instead.
"""
result = _client.decide(url)
return (
f"action={result.action} trust={result.scores.trust} "
f"threat={result.scores.threat} reason_codes={result.reason_codes}"
)
Error handling
from entropy0 import Entropy0Client, AuthenticationError, RateLimitError, APIError
try:
result = client.decide("example.com")
except AuthenticationError:
# bad or missing API key
...
except RateLimitError as e:
# e.retry_after is seconds until reset (if provided by the API)
...
except APIError as e:
# e.status_code for the HTTP status
...
Links
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file entropy0-0.1.3.tar.gz.
File metadata
- Download URL: entropy0-0.1.3.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0473c831030c3a714213a5dc84f6d14e734dfc728cacc8e45a707ec1f3105152
|
|
| MD5 |
ba6a159e170a75e4ec12f094c930fee6
|
|
| BLAKE2b-256 |
074907c62e47aad5f9d962a67c30fc70701958c6fc9bd6182c332ab496cd306c
|
File details
Details for the file entropy0-0.1.3-py3-none-any.whl.
File metadata
- Download URL: entropy0-0.1.3-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d79bb54a06f8b1f263cfb4c3c4fd85fe78edc1ad3ef4b7a51cf640e09a258c9
|
|
| MD5 |
8316fa974cf1fb8979768fe8b1e46ded
|
|
| BLAKE2b-256 |
2c2695e867d91dc86b5d39787ba01732dd47142efc5c0c306a25a11c8688233f
|