From airbyte-agent-sdk
Wires an Airbyte connector into a PydanticAI or Claude SDK agent, generating auth config, initialization, and a tool_utils-decorated function. Use when adding a connector to an agent.
How this skill is triggered — by the user, by Claude, or both
Slash command
/airbyte-agent-sdk:bootstrapping-agentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
```bash
uv pip install airbyte-agent-sdk
The single airbyte-agent-sdk package ships every typed connector. Import them from airbyte_agent_sdk.connectors.{slug}. tool_utils, list_entities(), and entity_schema() are only available on typed connectors.
import os
from pydantic_ai import Agent
from airbyte_agent_sdk import AirbyteAuthConfig
from airbyte_agent_sdk.connectors.stripe import StripeConnector
connector = StripeConnector(
auth_config=AirbyteAuthConfig(
airbyte_client_id=os.getenv("AIRBYTE_CLIENT_ID"),
airbyte_client_secret=os.getenv("AIRBYTE_CLIENT_SECRET"),
workspace_name=os.getenv("AIRBYTE_WORKSPACE_NAME", "default"),
)
)
agent = Agent(
"<provider:model>",
system_prompt=(
"You are a helpful assistant with access to Stripe. "
"Use the stripe_execute tool to look up customer, invoice, and balance data. "
"Ask for clarification if a request is ambiguous."
),
)
@agent.tool_plain
@StripeConnector.tool_utils
async def stripe_execute(entity: str, action: str, params: dict | None = None):
return await connector.execute(entity, action, params or {})
Always hosted mode: Use AirbyteAuthConfig with airbyte_client_id and airbyte_client_secret. Never generate local auth code.
The framework decorator goes on top, tool_utils goes underneath:
@agent.tool_plain # Framework registers this as a tool
@StripeConnector.tool_utils # Enriches docstring with connector capabilities
async def stripe_execute(...):
tool_utils is a @classmethod — use StripeConnector.tool_utils, not connector.tool_utils.
tool_utils automatically translates retryable errors to the framework's retry signal (ModelRetry for pydantic-ai). The example above continues to work unchanged — translation happens inside tool_utils with no extra decorator needed.
Reference demo: connector-sdk/examples/demo_agent.py (mocked, no credentials needed: --mock).
check = await connector.check()
if check.status == "healthy":
print(f"Connected — checked {check.checked_entity}/{check.checked_action}")
else:
print(f"Failed: {check.error}")
Detect the developer's framework from their existing imports:
from pydantic_ai import Agent → Use PydanticAI patternsfrom anthropic import Anthropic → Use Claude SDK patternsAll connectors ship in airbyte-agent-sdk. Import each one from airbyte_agent_sdk.connectors.{slug}:
| Connector | Import | Class |
|---|---|---|
| stripe | airbyte_agent_sdk.connectors.stripe | StripeConnector |
| zendesk-support | airbyte_agent_sdk.connectors.zendesk_support | ZendeskSupportConnector |
| hubspot | airbyte_agent_sdk.connectors.hubspot | HubspotConnector |
Hyphens in connector slugs become underscores in the submodule path.
The developer needs these in their .env:
AIRBYTE_CLIENT_ID=your_client_id
AIRBYTE_CLIENT_SECRET=your_client_secret
AIRBYTE_WORKSPACE_NAME=your_workspace_name
npx claudepluginhub airbytehq/airbyte-agent-sdk --plugin airbyte-agent-sdkScaffolds multi-connector agents using Airbyte connectors with PydanticAI or Claude SDK. Wires shared credentials, builds one tool per connector, and creates a run loop.
Builds AI agents and automates Claude Code using Agent SDK and headless CLI mode. Covers Python SDK, MCP servers, hooks, sessions, and programmatic queries.
Builds autonomous AI agents using the Claude Agent SDK (TypeScript and Python). Covers hooks, MCP servers, sandbox, session management, and structured outputs.