Skip to main content

Agentic Data Protocol (ADP) Python SDK

Project description

ADP Python SDK

Python SDK for the Agentic Data Protocol (ADP) — a deterministic, policy-aware protocol that allows AI agents to access heterogeneous data systems safely and reproducibly via a unified intent interface.

This SDK provides a client-side API for connecting to any ADP-compliant server (such as adp-hypervisor) over stdio transport.

Installation

# Using uv (recommended)
uv add adp-sdk

# Using pip
pip install adp-sdk

Quick Start

import asyncio
from adp_sdk import stdio_client, basic_auth, QueryIntent, PredicateGroup

async def main():
    async with stdio_client(
        "python", ["-m", "adp_hypervisor", "--config", "config.yaml"],
        authorization=basic_auth("alice", "secret"),
    ) as session:
        # 1. Discover available resources
        discovery = await session.discover()
        for resource in discovery.resources:
            print(f"  {resource.resource_id}: {resource.description}")

        # 2. Describe a resource to get its usage contract
        contract = await session.describe("com.example:users", "QUERY")
        print(f"Fields: {[f.field_id for f in contract.usage_contract.fields]}")

        # 3. Execute an intent
        intent = QueryIntent(
            intentClass="QUERY",
            resourceId="com.example:users",
            predicates=PredicateGroup(op="AND", predicates=[]),
        )
        result = await session.execute(intent)
        print(f"Got {len(result.results)} rows")

asyncio.run(main())

API Overview

stdio_client (convenience)

async with stdio_client(command, authorization=basic_auth("user", "secret")) as session:
    ...

Launches an ADP server as a subprocess and returns an initialized ClientSession.

ClientSession

Method Description
discover(filter?, cursor?) List available resources
describe(resource_id, intent_class, version?, cursor?) Get a resource's usage contract
validate(intent) Check if an intent is valid
execute(intent, cursor?) Run an intent against a resource
ping() Check server liveness

Error Handling

All server errors are mapped to typed exceptions:

from adp_sdk import ResourceNotFoundError, ValidationFailedError

try:
    result = await session.execute(intent)
except ResourceNotFoundError as e:
    print(f"Resource not found: {e}")
except ValidationFailedError as e:
    print(f"Invalid intent: {e}")

Development

# Install dependencies
uv sync --all-extras

# Run tests
uv run python -m unittest discover -s tests -v

# Type checking
uv run pyright

# Linting
uv run ruff check .

License

Apache-2.0

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

adp_sdk-0.1.0.dev1.tar.gz (72.0 kB view details)

Uploaded Source

Built Distribution

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

adp_sdk-0.1.0.dev1-py3-none-any.whl (31.3 kB view details)

Uploaded Python 3

File details

Details for the file adp_sdk-0.1.0.dev1.tar.gz.

File metadata

  • Download URL: adp_sdk-0.1.0.dev1.tar.gz
  • Upload date:
  • Size: 72.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for adp_sdk-0.1.0.dev1.tar.gz
Algorithm Hash digest
SHA256 55bf8454abc9b37288a90bf029a322ed64f79d3335d4372df6201ae6677b1415
MD5 9e086a96d1abfaf3730db2aca7c7da98
BLAKE2b-256 5446ae5914610dd6c8d7ba01f438402a4fb16bdbdfa59711c9908a9136e90ae8

See more details on using hashes here.

File details

Details for the file adp_sdk-0.1.0.dev1-py3-none-any.whl.

File metadata

  • Download URL: adp_sdk-0.1.0.dev1-py3-none-any.whl
  • Upload date:
  • Size: 31.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for adp_sdk-0.1.0.dev1-py3-none-any.whl
Algorithm Hash digest
SHA256 59d55126b7406455b8fe332cab7ee977ecc740c52b3e4fa23658eccab2475e40
MD5 379474f2671425d66e1489f1b1179204
BLAKE2b-256 28ccc7a81ffaa5adb52152e19357580a62db9d211d072d25827747ff88fa6b9e

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