External Agent Adapters
Connect external AI agents via MCP, A2A, OpenClaw, and HTTP protocols
External Agent Adapters
The @sprinterai/runtime package includes adapters for integrating external AI agents into your venture. These adapters convert external agent protocols into the standard AI SDK ToolSet interface, allowing them to work alongside built-in agents.
Overview
| Adapter | Protocol | Use Case |
|---|---|---|
| MCP | Model Context Protocol | Connect to MCP-compatible tool servers |
| A2A | Agent-to-Agent | Google's agent interoperability protocol |
| OpenClaw | OpenClaw | Community agent marketplace |
| HTTP | REST/HTTP | Any agent accessible via HTTP endpoint |
MCP Adapter
Connects to MCP-compatible servers using @ai-sdk/mcp.
import { createMCPAdapter } from '@sprinterai/runtime/adapters';
const tools = await createMCPAdapter({
serverUrl: 'http://localhost:3001',
capabilities: ['search', 'analyze'],
});A2A Adapter
Implements Google's Agent-to-Agent protocol for cross-platform agent communication.
import { createA2AAdapter } from '@sprinterai/runtime/adapters';
const agent = createA2AAdapter({
endpoint: 'https://agent.example.com/.well-known/agent.json',
auth: { type: 'bearer', token: process.env.A2A_TOKEN },
});OpenClaw Adapter
Connects to agents published on the OpenClaw marketplace.
import { createOpenClawAdapter } from '@sprinterai/runtime/adapters';
const agent = createOpenClawAdapter({
agentId: 'org/agent-name',
apiKey: process.env.OPENCLAW_API_KEY,
});HTTP Agent Adapter
Generic adapter for any agent accessible via HTTP. Wraps external endpoints as LanguageModelV2 instances.
import { createHTTPAgentAdapter } from '@sprinterai/runtime/adapters';
const model = createHTTPAgentAdapter({
url: 'https://api.example.com/v1/chat',
headers: { Authorization: `Bearer ${process.env.API_KEY}` },
transform: {
request: (messages) => ({ prompt: messages }),
response: (data) => data.completion,
},
});Universal ToolSet Interface
All adapters produce standard AI SDK ToolSet objects. This means external tools work identically to built-in tools:
import { resolveAgentTools } from '@sprinterai/runtime/tool';
const tools = resolveAgentTools({
toolGroups: ['entity', 'web'],
customTools: ['mcp-search', 'a2a-analyst'],
}, permissions);
// External tools resolved alongside built-in toolsAdding Custom Adapters
Implement the adapter interface to support new protocols:
import type { ToolSet } from '@sprinterai/core';
export async function createCustomAdapter(config: {
endpoint: string;
}): Promise<ToolSet> {
// Connect to external service
// Return tools as ToolSet
return {
myTool: {
description: 'Custom external tool',
parameters: z.object({ query: z.string() }),
execute: async ({ query }) => {
const response = await fetch(config.endpoint, {
method: 'POST',
body: JSON.stringify({ query }),
});
return response.json();
},
},
};
}