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
@httpand@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 —
@pricingdecorator 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.
- OpenAI Workflows — Hosted OpenAI agent/workflow execution
- Database (Supabase) — SQL, CRUD, per-user isolation
- n8n — Workflow automation
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.