teradata-agentstack
A Python SDK package that dynamically generates client classes from OpenAPI specifications for Teradata AI/ML platform services.
It provides a unified way to work with Teradata AgentStack services from Python.
For community support, visit Teradata Community.
For Teradata customer support, visit Teradata Support.
Copyright 2026 Teradata. All rights reserved.
Table of Contents
- Overview
- Release Notes
- Installation
- Authentication
- Quick Start
- Notebook Workflows
- Pydantic Model Support
- Polling Async Resources
- The blueprint() Function
- Notes and Limitations
- License
Overview
teradata-agentstack is a Python SDK that gives you a unified interface to Teradata's AI/ML platform services. It covers the full lifecycle of an AI agent on Teradata: deploy agents as managed services, serve and manage models through the Inference Engine, observe agent behavior end-to-end, control access through API key management, register MCP servers and endpoints, and provision the Ray clusters your workloads run on.
- A
blueprint()helper lists all available classes and operations for a module.
Included SDKs
| Module | Client Class | Generated Classes | Service |
|---|---|---|---|
teradata_agentstack.agentops |
AgentOpsClient |
Definitions, Deployments, Secrets, Health |
Teradata AgentOps |
teradata_agentstack.rayops |
RayClusterManagementClient |
RayClusterManagement, ... |
Ray Cluster Management |
teradata_agentstack.agento11y |
AgentO11yClient |
Traces, Projects, Evaluations, ... |
Agent Observability |
teradata_agentstack.access_manager |
AccessManagerClient |
Keys, Admin, Proxy |
API Access Manager |
teradata_agentstack.inference_engine |
InferenceEngineClient |
Secrets, Pools, Endpoints, ... |
Inference Engine |
teradata_agentstack.mcp_management |
MCPManagementClient |
Servers, ... |
MCP Management Service |
teradata_agentstack.mcp_endpoint_management |
MCPEndpointManagementClient |
Endpoints, ... |
MCP Endpoint Management |
Release Notes
Version 20.00.00.02
- Updated README with general documentation improvements.
- Added link to public notebook workflows.
Version 20.00.00.01
- ELE-10086 : Fixed a startup issue that could stop RayOps from loading in some environments.
- Fixed Access Manager fallback models so API responses are recognized correctly and work reliably.
Version 20.00.00.00
- First release of
teradata-agentstack. - Supported SDK modules in this release:
agentopsrayopsagento11yaccess_managerinference_enginemcp_managementmcp_endpoint_management
Installation
Version: 20.00.00.00 | Python: ≥ 3.9 (64-bit) | Platform: Windows, macOS, Linux
pip install teradata-agentstack
Note: A 64-bit Python environment is required. Installation will fail on 32-bit platforms.
Dependencies
| Package | Version |
|---|---|
teradataml |
>=20.00.00.10 |
requests |
≥ 2.33.0 |
oauthlib |
≥ 3.2.2 |
requests-oauthlib |
≥ 2.0.0 |
pydantic |
≥ 2.10.6 |
PyYAML |
≥ 6.0.2 |
pandas |
≥ 0.22 |
Authentication
All SDK clients accept the same authentication objects, imported from the top-level package:
from teradata_agentstack import ClientCredentialsAuth, DeviceCodeAuth, BearerAuth, BasicAuth
ClientCredentialsAuth — OAuth2 Client Credentials
auth = ClientCredentialsAuth(
auth_token_url="https://your-sso/token",
auth_client_id="your_client_id",
auth_client_secret="your_client_secret"
)
DeviceCodeAuth — OAuth2 Device Code Flow
auth = DeviceCodeAuth(
auth_token_url="https://your-sso/token",
auth_device_auth_url="https://your-sso/device_authorization",
auth_client_id="your_client_id"
)
BearerAuth — Static Bearer Token
auth = BearerAuth(auth_bearer="your_bearer_token")
BasicAuth — Username / Password
auth = BasicAuth(username="user", password="pass")
Authentication Precedence Order
Each configuration value (base_url, auth, ssl_verify) is resolved in the following order. The first source that provides a value wins:
- Constructor arguments — values passed directly to the client (e.g.,
base_url=...,auth=...). - Environment variables — values read from the process environment (e.g.,
BASE_URL,BASE_API_AUTH_MODE). - YAML config file — values loaded from the config file (explicit
config_filepath, or the default~/.teradataml/sdk/config.yaml).
If none of the three sources supplies a required value, a
TeradataMlExceptionis raised.
Authentication via Environment Variables
You can configure authentication without passing an auth object by setting environment variables:
| Variable | Description |
|---|---|
BASE_URL |
Base URL of the API endpoint |
BASE_API_AUTH_MODE |
client_credentials, device_code, bearer, or basic |
BASE_SSL_VERIFY |
true or false |
BASE_API_AUTH_CLIENT_ID |
OAuth2 client ID |
BASE_API_AUTH_CLIENT_SECRET |
OAuth2 client secret |
BASE_API_AUTH_TOKEN_URL |
OAuth2 token endpoint URL |
BASE_API_AUTH_DEVICE_AUTH_URL |
OAuth2 device authorization URL |
BASE_API_AUTH_BEARER_TOKEN |
Static bearer token |
Authentication via YAML Config File
# config.yaml
base_url: https://your-server
ssl_verify: true
auth_mode: client_credentials
auth_client_id: your_client_id
auth_client_secret: your_client_secret
auth_token_url: https://your-sso/token
Pass the path using the config_file argument on any client.
Quick Start
AgentOps SDK
from teradata_agentstack import DeviceCodeAuth
from teradata_agentstack.agentops import AgentOpsClient
from teradata_agentstack.agentops import Definitions, Deployments, Secrets, Health
from teradata_agentstack.agentops.models import (
AgentDefinitionCreateRequest,
DeploymentCreateRequest,
)
auth = DeviceCodeAuth(
auth_token_url="https://your-sso/token",
auth_device_auth_url="https://your-sso/device_authorization",
auth_client_id="your_client_id"
)
client = AgentOpsClient(
base_url="https://your-agentops-server",
auth=auth,
workspace_id="your-workspace-id",
namespace="your-k8s-namespace"
)
# Create API instances
agent_definitions = Definitions(client=client)
deployments = Deployments(client=client)
secrets = Secrets(client=client)
# Create an agent definition — pass Pydantic model directly to body=
created = agent_definitions.create(
body=AgentDefinitionCreateRequest(
name="my-agent",
framework="LangGraph",
artifacts={"storage_type": "zip"},
),
file="/path/to/agent.zip",
)
# Poll until status reaches terminal state (published/failed)
agent_definitions.poll(id=created.id)
# Create a deployment
deployment = deployments.create(body=DeploymentCreateRequest(...))
# Poll until deployment is active/failed/stopped
deployments.poll(id=deployment.agent_id)
Note: The old class names (
AgentDefinitions,AgentDeployments,AgentSecrets) still work as backward-compatible aliases.
### Ray Cluster Management SDK
```python
from teradata_agentstack import ClientCredentialsAuth
from teradata_agentstack.rayops import RayClusterManagementClient
auth = ClientCredentialsAuth(
auth_token_url="https://your-sso/token",
auth_client_id="your_client_id",
auth_client_secret="your_client_secret"
)
client = RayClusterManagementClient(
base_url="https://your-ray-server",
auth_data=auth
)
Agent Observability SDK
from teradata_agentstack import BearerAuth
from teradata_agentstack.agento11y import AgentO11yClient
auth = BearerAuth(auth_bearer="your_bearer_token")
client = AgentO11yClient(
base_url="https://your-agento11y-server",
auth=auth,
project_id="your-project-id"
)
Access Manager SDK
from teradata_agentstack import BearerAuth
from teradata_agentstack.access_manager import AccessManagerClient
auth = BearerAuth(auth_bearer="your_bearer_token")
client = AccessManagerClient(
base_url="https://your-server:9876",
auth=auth
)
Inference Engine SDK
from teradata_agentstack import ClientCredentialsAuth
from teradata_agentstack.inference_engine import InferenceEngineClient
auth = ClientCredentialsAuth(
auth_token_url="https://your-sso/token",
auth_client_id="your_client_id",
auth_client_secret="your_client_secret"
)
client = InferenceEngineClient(
base_url="https://your-inference-server",
auth=auth,
workspace="your-workspace"
)
MCP Management SDK
from teradata_agentstack import ClientCredentialsAuth
from teradata_agentstack.mcp_management import MCPManagementClient
auth = ClientCredentialsAuth(
auth_token_url="https://your-sso/token",
auth_client_id="your_client_id",
auth_client_secret="your_client_secret"
)
client = MCPManagementClient(
base_url="https://your-mcp-server",
auth=auth
)
MCP Endpoint Management SDK
from teradata_agentstack import BasicAuth
from teradata_agentstack.mcp_endpoint_management import MCPEndpointManagementClient
auth = BasicAuth(username="user", password="pass")
client = MCPEndpointManagementClient(
base_url="https://your-mcp-server:8001",
auth=auth
)
Notebook Workflows
End-to-end Jupyter notebook examples demonstrating common workflows are available in the public repository:
Pydantic Model Support
All SDK modules support passing Pydantic models directly to request body parameters. The SDK automatically serializes models before sending:
from teradata_agentstack.agentops.models import AgentDefinitionCreateRequest
# Pass Pydantic model directly
result = agent_definitions.create(
body=AgentDefinitionCreateRequest(name="my-agent", framework="LangGraph", ...),
file="/path/to/agent.zip",
)
Polling Async Resources
Some SDK classes support a .poll() method for resources that are processed asynchronously:
| Module | Class | Terminal States | Success States |
|---|---|---|---|
agentops |
Definitions |
published, failed |
published |
agentops |
Deployments |
active, failed, stopped |
active |
# Poll until agent definition is published (or failed)
result = agent_definitions.poll(id=agent_def_id, interval=5, max_attempts=20)
# Poll until deployment is active (or failed/stopped)
result = deployments.poll(id=deployment_id, interval=10, max_attempts=30)
Parameters:
id(required): Resource ID to pollinterval(optional): Seconds between polls (default varies by resource)max_attempts(optional): Maximum attempts before timeout
The blueprint() Function
Every SDK module exposes a blueprint() function that lists all available classes and operations for that module:
from teradata_agentstack.agentops import blueprint
blueprint()
# ----------------------------------------------------------------
# Available classes for AgentOps SDK:
# * teradata_agentstack.agentops.Definitions
# * teradata_agentstack.agentops.Deployments
# ...
# ----------------------------------------------------------------
Notes and Limitations
- Only keyword arguments are accepted in API methods; positional arguments are not supported.
- Pydantic models can be passed directly to
bodyparameters — the SDK handles serialization automatically. - TLS certificate verification is enabled by default. Disable only in trusted development environments (
ssl_verify=False).
License
Copyright 2026 Teradata. All rights reserved. Teradata Confidential and Trade Secret.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
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 teradata_agentstack-20.0.0.2-py3-none-any.whl.
File metadata
- Download URL: teradata_agentstack-20.0.0.2-py3-none-any.whl
- Upload date:
- Size: 180.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df261851313c77767ecf01af518756cf0f77ff2d2f4e706f16b082a949b12f1b
|
|
| MD5 |
ab20dda5300273749084ad6560972162
|
|
| BLAKE2b-256 |
52d7e4077fef414b93e82e7a9e25c11bdcbc15a42c2e59a992f7d1e3d516b35d
|