0.0.12 • Published 3 months ago

agentrpc v0.0.12

Weekly downloads
-
License
MIT
Repository
-
Last release
3 months ago

AgentRPC TypeScript SDK

A universal RPC layer for AI agents. Connect to any function, any language, any framework, in minutes.

Installation

npm install agentrpc

Registering Tools

Creating an AgentRPC Client

import { AgentRPC } from "agentrpc";

const client = new AgentRPC({
  apiSecret: "YOUR_API_SECRET",
});

Registering a Tool

import { z } from "zod";

client.register({
  name: "hello",
  schema: {
    input: z.object({ name: z.string() }),
  },
  handler: async ({ name }) => `Hello ${name}`,
  // Optional
  config: {
    retryCountOnStall: 3,
    timeoutSeconds: 30,
  },
});

Starting the Listener

await client.listen();

Stopping the Listener

await client.unlisten();

MCP Server

The AgentRPC TypeScript SDK includes an MCP (Model Context Protocol) server that can be started using:

npx agentrpc mcp <YOUR_API_SECRET>

This will launch an MCP-compliant server, allowing external AI models and applications to interact with your registered tools.

For more details on MCP, visit Model Context Protocol.

Claude Desktop Usage:

Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "agentrpc": {
      "command": "npx",
      "args": [
        "-y",
        "agentrpc",
        "mcp"
      ],
      "env": {
        "AGENTRPC_API_SECRET": "<YOUR_API_SECRET>"
      }
    }
  }
}

More Info

Cursor

Add the following to your ~/.cursor/mcp.json:

{
  "mcpServers": {
    "agentrpc": {
      "command": "npx",
      "args": ["-y", "agentrpc", "mcp"],
      "env": {
        "AGENTRPC_API_SECRET": "<YOUR_API_SECRET>"
      }
    }
  }
}

More Info

Zed

Zed

OpenAI Tools

AgentRPC provides integration with OpenAI's function calling capabilities, allowing you to expose your registered RPC functions as tools for OpenAI models to use.

client.OpenAI.getTools()

The getTools() method returns your registered AgentRPC functions formatted as OpenAI tools, ready to be passed to OpenAI's API.

// First register your functions with AgentRPC (Locally or on another machine)

// Then get the tools formatted for OpenAI
const tools = await client.OpenAI.getTools();

// Pass these tools to OpenAI
const chatCompletion = await openai.chat.completions.create({
  model: "gpt-4-1106-preview",
  messages: messages,
  tools: tools,
  tool_choice: "auto",
});

client.OpenAI.executeTool(toolCall)

The executeTool() method executes an OpenAI tool call against your registered AgentRPC functions.

// Process tool calls from OpenAI's response
if (responseMessage.tool_calls && responseMessage.tool_calls.length > 0) {
  for (const toolCall of responseMessage.tool_calls) {
    try {
      // Execute the tool and add result to messages
      messages.push({
        role: "tool",
        tool_call_id: toolCall.id,
        content: await client.OpenAI.executeTool(toolCall),
      });
    } catch (error) {
      console.error(`Error executing tool ${toolCall.function.name}:`, error);
      messages.push({
        role: "tool",
        tool_call_id: toolCall.id,
        content: `Error: ${error.message}`,
      });
    }
  }
}

API

new AgentRPC(options?)

Creates a new AgentRPC client.

Options:

OptionTypeDefaultDescription
apiSecretstringRequiredThe API secret key.
endpointstringhttps://api.agentrpc.comCustom API endpoint.
machineIdstringAutomatically generatedCustom machine ID.

register({ name, schema, handler, config })

Registers a tool.

  • name: Unique tool identifier.
  • schema: Input validation schema (Zod or JSON schema).
  • handler: Async function to process input.
  • config: Optional tool configuration.

Tool Configuration Options:

OptionTypeDefaultDescription
retryCountOnStallnumbernullNumber of retries on stall.
timeoutSecondsnumbernullRequest timeout in seconds.

listen()

Starts listening for requests.

unlisten()

Stops all running listeners.

0.0.12

3 months ago

0.0.11

3 months ago

0.0.10

3 months ago

0.0.9

3 months ago

0.0.8

3 months ago

0.0.7

3 months ago

0.0.6

3 months ago

0.0.5

3 months ago

0.0.4

3 months ago

0.0.3

3 months ago

0.0.2

3 months ago

0.0.1

3 months ago