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.tar.gz (73.5 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-py3-none-any.whl (31.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: adp_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 73.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","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.tar.gz
Algorithm Hash digest
SHA256 2bfa89d76c0017ab513e8120ae96dbc2cbaf535fdeee1998eb89dd98ddcb4f2a
MD5 ffccfb5aef180255f53f086304ee5a47
BLAKE2b-256 958b6dac33fba8f33115a2594ca609a54ada3b3e854f22ccfe14b555a879a2ef

See more details on using hashes here.

File details

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

File metadata

  • Download URL: adp_sdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 31.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","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-py3-none-any.whl
Algorithm Hash digest
SHA256 81fb5a3d7037b318d75f56b15ab319e8d3c4c419543e797b651420166945cb6b
MD5 de7fd1197046b8df506397298e4d7d37
BLAKE2b-256 fbfd15dde4952f3f4c358976b6409b9e4e1a3243164750a2b2036c2c96c143f8

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