Sprinter Platform

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

AdapterProtocolUse Case
MCPModel Context ProtocolConnect to MCP-compatible tool servers
A2AAgent-to-AgentGoogle's agent interoperability protocol
OpenClawOpenClawCommunity agent marketplace
HTTPREST/HTTPAny 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 tools

Adding 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();
      },
    },
  };
}