Python SDK

Sync and async clients. Requires Python 3.9+. Uses httpx under the hood.

Installation

bash
pip install getstack

Quick Start

python
from getstack import Stack

stack = Stack(api_key="sk_live_...")

# Register an agent
agent = stack.agents.register("my-agent")

# Issue a passport with mission context
with stack.passports.mission(
    agent_id=agent.id,
    intent="Process invoices",
    services=["slack", "stripe"],
) as mission:
    mission.log("slack", "read_channel", "#invoices")
    cred = stack.credentials.get("slack")
    mission.log("stripe", "create_invoice")

Services

stack.agents

python
stack.agents.register("name", description="optional")
stack.agents.list()
stack.agents.get("agt_...")
stack.agents.update("agt_...", status="suspended")
stack.agents.delete("agt_...")

stack.skills

python
# Publishing
stack.skills.publish(
    name="my-skill",
    description="...",
    input_schema={...},
    output_schema={...},
    execution_mode="sealed",
)

# Browsing
skills = stack.skills.browse(query="financial analysis", tags="finance")

# Invoking
result = stack.skills.invoke(
    "skl_...",
    agent_id="agt_...",
    input={"data": "..."},
)

# Polling
completed = stack.skills.poll(result.id, timeout_seconds=60)

# Requests
stack.skills.post_request(description="I need...", tags=["finance"])
stack.skills.suggest_composition("sreq_...")

stack.identity

python
providers = stack.identity.list_providers()
session = stack.identity.initiate_verification("persona")
stack.identity.complete_verification("persona", session.session_ref)
claims = stack.identity.list_claims()
stack.identity.revoke_claim("clm_...")

Authentication Methods

python
# API key (default)
stack = Stack(api_key="sk_live_...")

# Session JWT
stack = Stack.from_session("eyJ...")

# OAuth
stack = Stack.from_oauth(
    client_id="...",
    client_secret="...",
    access_token="...",
    refresh_token="...",
)

Error Handling

python
from getstack import Stack, NotFoundError, ForbiddenError

try:
    agent = stack.agents.get("agt_nonexistent")
except NotFoundError:
    print("Agent not found")
except ForbiddenError:
    print("Access denied")
STACK — Infrastructure for AI Agents