From airbyte-agent-sdk
Scaffolds multi-connector agents using Airbyte connectors with PydanticAI or Claude SDK. Wires shared credentials, builds one tool per connector, and creates a run loop.
How this skill is triggered — by the user, by Claude, or both
Slash command
/airbyte-agent-sdk:building-multi-connector-agentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this when an agent needs two or more Airbyte connectors.
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_utilsnpx claudepluginhub airbytehq/airbyte-agent-sdk --plugin airbyte-agent-sdkWires 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.
Guides building production multi-agent systems with OpenAI AgentKit and Agents SDK — orchestration, handoffs, routines, and architectural patterns.
Orchestrates multi-agent AI systems with handoffs, routing, and workflows using AI SDK v5 in TypeScript. For agent collaboration and task delegation across providers.