Connectors — Integration Compatibility Matrix
Supported connectors, their stability status, and configuration reference.
Connectors — Integration Compatibility Matrix
Connectors are pluggable adapters that discover external resources (models, tools, dashboards) and register them in the AgentBreeder shared registry. A connector runs scan() and writes the result to the registry — agents then reference discovered items by name in agent.yaml.
Compatibility Matrix
| Connector | Status | Source | What it discovers |
|---|---|---|---|
litellm | ✅ Stable | connectors/litellm/ | Models from a LiteLLM proxy (/v1/models) |
smtp | ✅ Stable | connectors/email/ | Email-send capability (surfaces as a tool) |
mcp_scanner | ✅ Stable | connectors/mcp_scanner/ | MCP servers in .mcp.json + local ports |
openrouter | ✅ Stable | connectors/openrouter/ | Hundreds of models from OpenRouter API |
news | ✅ Stable | connectors/news/ | HackerNews, ArXiv, and generic RSS feeds |
grafana | 🚧 Beta | connectors/grafana/ | Dashboards; pushes metrics via Loki/Tempo |
datadog | 🚧 Beta | connectors/datadog/ | Monitors; pushes metrics + APM traces |
browser_use | 📋 Planned | connectors/browser_use/ | Browser automation via the browser-use library |
Status key:
- ✅ Stable — tested, production-ready, semver-stable API
- 🚧 Beta — functional but API may change between minor versions
- 📋 Planned — scaffolded, optional dep required, not yet promoted to stable
Stable Connectors
litellm — LiteLLM Gateway
Reads available models from a running LiteLLM proxy and registers them as model registry entries.
Environment variables:
| Variable | Default | Description |
|---|---|---|
LITELLM_BASE_URL | http://localhost:4000 | LiteLLM proxy base URL |
LITELLM_API_KEY | (none) | API key for authenticated proxies |
Usage:
from connectors.litellm.connector import LiteLLMConnector
connector = LiteLLMConnector(base_url="http://litellm:4000", api_key="sk-...")
if await connector.is_available():
models = await connector.scan()
# models → [{"name": "openai/gpt-4o", "provider": "openai", ...}, ...]agent.yaml — reference a LiteLLM-discovered model:
model:
primary: openai/gpt-4o # model ID as returned by scan()
gateway: litellmsmtp — Email Sender
Sends email via SMTP and registers the capability as a tool in the registry.
Environment variables:
| Variable | Default | Description |
|---|---|---|
SMTP_HOST | (required) | SMTP server hostname |
SMTP_PORT | 587 | SMTP port |
SMTP_USER | (none) | Auth username |
SMTP_PASSWORD | (none) | Auth password |
SMTP_USE_TLS | true | Enable STARTTLS |
Usage:
from connectors.email.smtp import SMTPConnector
connector = SMTPConnector(host="smtp.gmail.com", port=587, user="...", password="...")
await connector.send_async(
to=["alice@example.com"],
subject="Agent alert",
body="Your order-fulfillment agent completed run #42.",
)mcp_scanner — MCP Auto-Discovery
Discovers MCP servers from .mcp.json files and by probing well-known local ports.
Probed locations (in order):
$PWD/.mcp.json~/.mcp.json- Ports 3000–3005 on
localhost(HTTP health probe)
Usage:
from connectors.mcp_scanner.scanner import MCPScanner
scanner = MCPScanner()
tools = await scanner.scan()
# tools → [{"name": "filesystem", "source": "mcp_scanner", ...}, ...]Discovered tools are available immediately via agentbreeder scan:
agentbreeder scan --source mcpopenrouter — OpenRouter Models
Fetches the full model catalogue from OpenRouter and registers each model.
Environment variables:
| Variable | Default | Description |
|---|---|---|
OPENROUTER_API_KEY | (required for full list) | OpenRouter API key |
OPENROUTER_BASE_URL | https://openrouter.ai/api/v1 | Base URL override |
Usage:
from connectors.openrouter.connector import OpenRouterConnector
connector = OpenRouterConnector(api_key="sk-or-...")
models = await connector.scan()news — News Feed Connectors
Three sub-connectors in connectors/news/:
| Sub-connector | Source | Import |
|---|---|---|
HackerNewsConnector | HN Algolia API | connectors.news.hackernews |
ArXivConnector | ArXiv Atom feed | connectors.news.arxiv |
RSSConnector | Any RSS/Atom feed | connectors.news.rss |
Usage:
from connectors.news.hackernews import HackerNewsConnector
hn = HackerNewsConnector(limit=20, min_score=100)
stories = await hn.scan()
# stories → [{"name": "Show HN: ...", "url": "...", ...}, ...]Beta Connectors
grafana — Grafana Observability
Pushes AgentBreeder agent metrics and traces to a Grafana stack (Loki for logs, Tempo for traces). Also scans existing Grafana dashboards into the registry.
Beta: The push_metrics() and push_traces() method signatures are still evolving and may change in a future minor release. Pin to a specific AgentBreeder version if using in production.
Constructor:
from connectors.grafana.connector import GrafanaConnector
connector = GrafanaConnector(
endpoint="https://grafana.example.com",
api_key="glsa_...",
org_id="1",
)datadog — Datadog APM
Pushes agent invocation metrics and distributed traces to Datadog APM. Scans existing Datadog monitors into the registry.
Beta: Trace payload format follows the Datadog v0.4 APM spec but may be updated to v0.5 in a future release.
Constructor:
from connectors.datadog.connector import DatadogConnector
connector = DatadogConnector(
api_key="dd_api_...",
app_key="dd_app_...",
site="datadoghq.com", # or "datadoghq.eu" for EU
)Planned Connectors
browser_use — Browser Automation
Surfaces the browser-use library as a computer_use_20260401 tool type. When deploy.cloud is claude-managed, the tool type is forwarded directly to Anthropic Managed Agents — no container is built.
Install the optional dependency:
pip install browser-useagent.yaml:
tools:
- name: browser
type: computer_use_20260401browser_use is scaffolded and functional but not yet promoted to Stable. It requires pip install browser-use and reports graceful unavailability when the library is absent.
Writing a Custom Connector
All connectors implement connectors.base.BaseConnector:
from connectors.base import BaseConnector
class MyConnector(BaseConnector):
@property
def name(self) -> str:
return "my-connector"
async def is_available(self) -> bool:
"""Return True if the external service is reachable."""
...
async def scan(self) -> list[dict]:
"""Return a list of discovered items.
Each item must have at minimum:
- name: str
- description: str
- source: str (set to self.name)
"""
...Place your connector in connectors/<your-name>/connector.py and register it with the scanner:
agentbreeder scan --source my-connector