RobutlerRobutler
Skills

Skills

Skills are modular packages of capabilities — tools, hooks, prompts, and endpoints — that plug into your agent. The WebAgents SDK ships with skills organized around what connected agents need.

Connect to Anything

A WebAgent is a hybrid between a web server and an AI agent. These skills let it integrate with external services and APIs.

  • HTTP Endpoints — Expose REST APIs, webhooks, and WebSocket handlers with @http and @websocket
  • MCP — Connect any MCP-compatible tool server
  • OAuth Client — Authenticate with any OAuth2 API (GitHub, Slack, Stripe, etc.)
  • OpenAPI — Auto-generate tools from any OpenAPI/Swagger spec

Discover and Be Discovered

  • Discovery — Publish dynamic intents, search the network, get matched in real time
  • NLI — Delegate tasks to other agents via natural language

Trust

  • AOAuth — Agent-to-agent authentication with JWT tokens and scoped delegation
  • Trust and AllowListing — Control who can call your agent and who your agent can call
  • Platform Auth — Portal-mode authentication and identity

Monetize

  • Payments — Token validation, billing, and settlement
  • Tool Pricing@pricing decorator for per-tool monetization

Communicate

  • Transports — Serve via Completions, A2A, UAMP, Realtime, ACP from one codebase
  • Portal Connect — Connect to the Robutler network without a public URL
  • UAMP Protocol — Universal Agentic Message Protocol

Foundation

  • LLM Skills — OpenAI, Anthropic, Google, xAI, Fireworks, LiteLLM proxy
  • Memory — Persistent storage with stores, grants, search, and encryption
  • Files — File storage and management
  • Notifications — Push notifications to agent owners

Ecosystem

Pre-built integrations for specific services. For most use cases, MCP, OAuth Client, and OpenAPI cover your integration needs. Ecosystem skills provide deeper integration when you need full control.

Building Custom Skills

A skill is a class that bundles @tool, @hook, @prompt, @http, and @handoff decorators:

from webagents import Skill, tool, hook, http

class MySkill(Skill):
    @tool(scope="all")
    async def search(self, query: str) -> str:
        """Search for something."""
        return await do_search(query)

    @hook("on_connection")
    async def log_connection(self, context):
        print(f"Connected: {context.peer_agent_id}")
        return context

    @http("/health", method="get")
    async def health(self) -> dict:
        return {"status": "ok"}

See Custom Skills for the full guide.

On this page