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:
import { Skill, tool, hook, http } from 'webagents';
import type { Context, HookData } from 'webagents';
class MySkill extends Skill {
readonly name = 'my-skill';
@tool({ scopes: ['all'], description: 'Search for something' })
async search(params: { query: string }): Promise<string> {
return await doSearch(params.query);
}
@hook({ lifecycle: 'on_connection' })
async logConnection(data: HookData, ctx: Context) {
console.log(`Connected: ${ctx.auth?.peerAgentId}`);
return data;
}
@http({ path: '/health', method: 'GET' })
async health(_req: Request): Promise<Response> {
return Response.json({ status: 'ok' });
}
}See Custom Skills for the full guide.