From airbyte-agent-sdk
Scaffolds multi-connector agents using Airbyte SDK with PydanticAI or Claude SDK. Wires connectors like Jira/Slack, composes tools per connector, and creates run loops for projects with multiple data sources.
npx claudepluginhub airbytehq/airbyte-agent-sdk --plugin airbyte-agent-sdkThis skill uses the workspace's default tool permissions.
Use this when an agent needs two or more Airbyte connectors.
Integrates Airbyte connectors into PydanticAI or Claude SDK agents by generating auth config, initialization code, and tool_utils-decorated tool functions. Use when adding connectors to agents.
Orchestrates multi-agent AI systems with handoffs, routing, and workflows using AI SDK v5 in TypeScript. For agent collaboration and task delegation across providers.
Scaffolds production-ready AI agents with Google's ADK: single/multi-agent orchestration, tool wiring, tests, and Vertex AI deployment.
Share bugs, ideas, or general feedback.
Use this when an agent needs two or more Airbyte connectors.
The bootstrapping-agent skill shows the single-connector pattern: direct class construction with AirbyteAuthConfig + @Connector.tool_utils decorator. Multi-connector agents use the same pattern, just repeated:
AirbyteAuthConfig(...) so credentials are shared across connectors.JiraConnector(auth_config=auth)).@Connector.tool_utils decorator.There are no new APIs — same install, same constructor, same classmethod decorator.
uv pip install airbyte-agent-sdk
The single airbyte-agent-sdk package bundles every typed connector, so tool_utils, list_entities(), and entity_schema() are available on each one without per-connector installs.
import os
from pydantic_ai import Agent
from airbyte_agent_sdk import AirbyteAuthConfig
from airbyte_agent_sdk.connectors.jira import JiraConnector
from airbyte_agent_sdk.connectors.slack import SlackConnector
# Shared credentials — all connectors reuse the same AirbyteAuthConfig
auth = 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"),
)
jira = JiraConnector(auth_config=auth)
slack = SlackConnector(auth_config=auth)
If the workspace contains multiple connectors of the same type, pin one by passing connector_id=os.getenv("JIRA_CONNECTOR_ID") to the constructor.
Each connector gets its own tool function — don't combine them into a mega-tool. Separate tools give the LLM clear, independent tool descriptions.
tool_utils is a @classmethod — decorate with @JiraConnector.tool_utils, not @jira.tool_utils.
agent = Agent(
"<provider:model>",
system_prompt=(
"You are a helpful assistant with access to Jira and Slack. "
"Use the jira_execute tool to read Jira issues and the slack_execute tool to post messages. "
"Ask for clarification if a request is ambiguous."
),
)
@agent.tool_plain
@JiraConnector.tool_utils
async def jira_execute(entity: str, action: str, params: dict | None = None):
return await jira.execute(entity, action, params or {})
@agent.tool_plain
@SlackConnector.tool_utils
async def slack_execute(entity: str, action: str, params: dict | None = None):
return await slack.execute(entity, action, params or {})
Describe the agent's purpose and what each connector does:
agent = Agent(
"<provider:model>",
system_prompt=(
"You are a customer support assistant. "
"Use the stripe tool to look up customer billing data. "
"Use the jira tool to create and track support tickets. "
"Use the slack tool to notify the support team."
),
)
import asyncio
async def main():
result = await agent.run("Find open P0 bugs and post a summary to #engineering")
print(result.output)
await jira.close()
await slack.close()
asyncio.run(main())
See Claude SDK patterns for the full message loop with tool handling.
For a new agent project:
my-agent/
├── pyproject.toml # dependencies: airbyte-agent-sdk, pydantic-ai or anthropic
├── .env # AIRBYTE_CLIENT_ID, AIRBYTE_CLIENT_SECRET, AIRBYTE_WORKSPACE_NAME
├── agent.py # Entry point: auth config, connectors, agent + tools, run loop
└── README.md
[project]
name = "my-agent"
requires-python = ">=3.11"
dependencies = [
"airbyte-agent-sdk",
"pydantic-ai",
"python-dotenv",
]
AIRBYTE_CLIENT_ID=your_client_id
AIRBYTE_CLIENT_SECRET=your_client_secret
AIRBYTE_WORKSPACE_NAME=your_workspace_name
AirbyteAuthConfig, typed connector constructors, tool_utils