Skip to main content

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_safe reflect 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

entropy0-0.1.2.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

entropy0-0.1.2-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file entropy0-0.1.2.tar.gz.

File metadata

  • Download URL: entropy0-0.1.2.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for entropy0-0.1.2.tar.gz
Algorithm Hash digest
SHA256 1b180e3d0d24435513b403b7a91fa87b956e89cdc1ed0919344f3cec9b2c426c
MD5 d692e4078eb4084bf0e8c4294b8b264a
BLAKE2b-256 5fcb5e8f884e6ea18313708ab2ca5b1d25a4e88f4ffc527d16abcb8bc62e2b41

See more details on using hashes here.

File details

Details for the file entropy0-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: entropy0-0.1.2-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.13.13

File hashes

Hashes for entropy0-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 357f2efce3cf037c18c6c96ef2fe0ec5b0663376da80dcd75de83c5bb7fd903b
MD5 1d7778e4a502e6cf5bbd5103176cd751
BLAKE2b-256 bd7697c7c47b47459fd1971258ea4a406a41931689afd5e62af1c3282f77eced

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page