agents-infra
Infrastructure for AI Agents. Phone, email, Social accounts, compute, domains, and voice calling for AI agents. Pay with USDC on Solana or Base via x402.
About this skill
The agents-infra skill empowers AI agents with the ability to interact with real-world communication channels and manage dedicated compute resources. It offers a suite of services accessible via API, enabling agents to register, provision and manage phone numbers, send and receive SMS messages, provision and read email inboxes, and even send emails. Beyond communication, agents can list, create, and manage compute servers, including uploading SSH keys and performing server actions. This skill is designed for AI agents that require a tangible presence and operational capabilities beyond their internal processing. It allows agents to act as virtual entities, capable of engaging in phone calls with advanced features like text-to-speech, audio playback, DTMF input, call recording, and transfers. By leveraging agents-infra, developers can build sophisticated AI agents that can automate tasks involving external communication, customer support, server management, or any scenario where an AI needs to interact with the world through traditional internet infrastructure. All services are paid for using USDC on the Solana or Base networks, providing a crypto-native payment model.
Best use case
The primary use case for agents-infra is to provide AI agents with a real-world presence and operational capabilities, enabling them to communicate via phone and email and manage their own compute infrastructure. This is invaluable for building autonomous AI assistants, automated customer service agents, or AI-driven DevOps tools that need to interact with external systems or human users. Developers building advanced AI agents that require integration with traditional communication methods or scalable compute resources will benefit most.
Infrastructure for AI Agents. Phone, email, Social accounts, compute, domains, and voice calling for AI agents. Pay with USDC on Solana or Base via x402.
AI agents gain the capability to securely provision and manage phone numbers, email inboxes, and compute servers, enabling real-world communication and computational tasks.
Practical example
Example input
Agent, I need to send an important SMS. First, register a new US agent, then provision a US phone number. Finally, use that number to send 'Please confirm your appointment for tomorrow.' to +15551234567.
Example output
Agent registered successfully. Phone number +1234567890 provisioned (ID: 'phone-xyz'). SMS sent to +15551234567 with message ID 'msg-abc'.
When to use this skill
- When an AI agent needs to send or receive SMS messages and emails.
- When an AI agent needs to make, receive, or manage voice calls.
- When an AI agent requires provisioning and managing dedicated compute servers.
- When enabling AI agents to interact with traditional communication systems and internet infrastructure.
When not to use this skill
- When an AI agent's tasks are purely internal and do not require external communication or infrastructure management.
- If you prefer to use traditional fiat currencies for service payments instead of USDC.
- For simple data retrieval or content generation tasks that don't involve external system interaction.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/agents-infra/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How agents-infra Compares
| Feature / Agent | agents-infra | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | easy | N/A |
Frequently Asked Questions
What does this skill do?
Infrastructure for AI Agents. Phone, email, Social accounts, compute, domains, and voice calling for AI agents. Pay with USDC on Solana or Base via x402.
How difficult is it to install?
The installation complexity is rated as easy. You can find the installation instructions above.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
Best AI Skills for Claude
Explore the best AI skills for Claude and Claude Code across coding, research, workflow automation, documentation, and agent operations.
Top AI Agents for Productivity
See the top AI agent skills for productivity, workflow automation, operational systems, documentation, and everyday task execution.
SKILL.md Source
**Base URL:** `https://agntos.dev`
**Source:** https://github.com/0xArtex/AgentOS
## Quick Reference
| Service | Endpoint | Cost (USDC) |
|---------|----------|-------------|
| Register agent | `POST /agents/register` | Free |
| **Phone** | | |
| Search numbers | `GET /phone/numbers/search?country=US` | Free |
| Provision number | `POST /phone/numbers` | 2.00 |
| Send SMS | `POST /phone/numbers/:id/send` | 0.05 |
| Read messages | `GET /phone/numbers/:id/messages` | 0.01 |
| **Voice Calls** | | |
| Place call | `POST /phone/numbers/:id/call` | 0.10 |
| Speak (TTS) | `POST /phone/calls/:callControlId/speak` | 0.05 |
| Play audio | `POST /phone/calls/:callControlId/play` | 0.05 |
| Send DTMF | `POST /phone/calls/:callControlId/dtmf` | 0.02 |
| Gather input | `POST /phone/calls/:callControlId/gather` | 0.05 |
| Record call | `POST /phone/calls/:callControlId/record` | 0.05 |
| Hangup | `POST /phone/calls/:callControlId/hangup` | 0.01 |
| Answer inbound | `POST /phone/calls/:callControlId/answer` | 0.01 |
| Transfer call | `POST /phone/calls/:callControlId/transfer` | 0.10 |
| List calls | `GET /phone/numbers/:id/calls` | 0.01 |
| Call details | `GET /phone/calls/:id` | 0.01 |
| **Email** | | |
| Provision inbox | `POST /email/inboxes` | 1.00 |
| Read inbox | `GET /email/inboxes/:id/messages` | 0.01 |
| Send email | `POST /email/inboxes/:id/send` | 0.05 |
| **Compute** | | |
| List plans | `GET /compute/plans` | Free |
| Upload SSH key | `POST /compute/ssh-keys` | 0.10 |
| Create server | `POST /compute/servers` | 5.00-95.00 |
| List servers | `GET /compute/servers` | 0.01 |
| Server status | `GET /compute/servers/:id` | 0.01 |
| Server action | `POST /compute/servers/:id/actions` | 0.05 |
| Resize server | `POST /compute/servers/:id/resize` | 0.10 |
| Delete server | `DELETE /compute/servers/:id` | 0.05 |
| **Domains** | | |
| Check availability | `GET /domains/check?domain=example.com` | Free |
| TLD pricing | `GET /domains/pricing?domain=example` | Free |
| Register domain | `POST /domains/register` | ~14-88 |
| DNS records | `GET /domains/:domain/dns` | Free |
| Update DNS | `POST /domains/:domain/dns` | Free |
| Pricing | `GET /pricing` | Free |
All paid endpoints use **x402** — make the request, get a 402, pay with USDC, done.
## Authentication
**Option A: Agent token** (register once)
```
Authorization: Bearer aos_xxxxx
```
**Option B: x402 payment** (no registration needed)
Just call any endpoint. The 402 response tells you what to pay. Payment = auth.
## How x402 Works
1. Call any paid endpoint → get `402 Payment Required`
2. Build a USDC transfer to the treasury address
3. Send it in the `Payment-Signature` header
4. Server verifies, settles on-chain, returns the response
**Networks supported:** Solana mainnet + Base (EVM)
---
## Register Agent (Free)
```bash
curl -X POST https://agntos.dev/agents/register \
-H "Content-Type: application/json" \
-d '{"name": "my-agent", "walletAddress": "YOUR_SOLANA_PUBKEY"}'
```
Returns token — save it: `Authorization: Bearer aos_xxxxx`
---
## 📱 Phone & SMS
### Search Available Numbers (Free)
```bash
curl "https://agntos.dev/phone/numbers/search?country=US&limit=5"
```
### Provision Number (2.00 USDC)
```bash
curl -X POST https://agntos.dev/phone/numbers \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"country": "US"}'
```
Response:
```json
{
"id": "uuid",
"phoneNumber": "+14782058302",
"country": "US",
"owner": "your-agent",
"active": true
}
```
### Send SMS (0.05 USDC)
```bash
curl -X POST https://agntos.dev/phone/numbers/PHONE_ID/send \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"to": "+15551234567", "body": "Hello from my agent!"}'
```
### Read Messages (0.01 USDC)
```bash
curl https://agntos.dev/phone/numbers/PHONE_ID/messages \
-H "Authorization: Bearer aos_xxxxx"
```
---
## 📞 Voice Calls
### Place Outbound Call (0.10 USDC)
```bash
curl -X POST https://agntos.dev/phone/numbers/PHONE_ID/call \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"to": "+15551234567",
"tts": "Hello! I am an AI agent calling you.",
"ttsVoice": "female",
"record": true
}'
```
Response:
```json
{
"id": "uuid",
"callControlId": "v3:xxxxx",
"from": "+14782058302",
"to": "+15551234567",
"status": "initiated",
"message": "Calling +15551234567 from +14782058302",
"hint": "TTS will play when the call is answered"
}
```
**Parameters:**
- `to` (required) — phone number to call (E.164 format)
- `tts` — text-to-speech message to play when answered
- `ttsVoice` — voice: `male` or `female`
- `audioUrl` — URL of audio file to play when answered
- `record` — `true` to record the call
- `timeoutSecs` — ring timeout (default 30)
### In-Call Actions
Once a call is connected, use the `callControlId` from the dial response:
**Speak text (TTS) — 0.05 USDC:**
```bash
curl -X POST https://agntos.dev/phone/calls/CALL_CONTROL_ID/speak \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"text": "Please press 1 for sales or 2 for support", "voice": "female", "language": "en-US"}'
```
**Play audio file — 0.05 USDC:**
```bash
curl -X POST https://agntos.dev/phone/calls/CALL_CONTROL_ID/play \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"audioUrl": "https://example.com/greeting.mp3"}'
```
**Send DTMF tones — 0.02 USDC:**
```bash
curl -X POST https://agntos.dev/phone/calls/CALL_CONTROL_ID/dtmf \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"digits": "1234#"}'
```
**Gather DTMF input — 0.05 USDC:**
```bash
curl -X POST https://agntos.dev/phone/calls/CALL_CONTROL_ID/gather \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"maxDigits": 4,
"terminatingDigit": "#",
"prompt": "Please enter your PIN followed by the pound sign"
}'
```
**Start recording — 0.05 USDC:**
```bash
curl -X POST https://agntos.dev/phone/calls/CALL_CONTROL_ID/record \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"format": "mp3"}'
```
**Stop recording:**
```bash
curl -X POST https://agntos.dev/phone/calls/CALL_CONTROL_ID/record/stop \
-H "Authorization: Bearer aos_xxxxx"
```
**Transfer call — 0.10 USDC:**
```bash
curl -X POST https://agntos.dev/phone/calls/CALL_CONTROL_ID/transfer \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"to": "+15559876543"}'
```
**Answer inbound call:**
```bash
curl -X POST https://agntos.dev/phone/calls/CALL_CONTROL_ID/answer \
-H "Authorization: Bearer aos_xxxxx"
```
**Hang up:**
```bash
curl -X POST https://agntos.dev/phone/calls/CALL_CONTROL_ID/hangup \
-H "Authorization: Bearer aos_xxxxx"
```
### Call History
**List calls for a number (0.01 USDC):**
```bash
curl https://agntos.dev/phone/numbers/PHONE_ID/calls \
-H "Authorization: Bearer aos_xxxxx"
```
**Get call details (0.01 USDC):**
```bash
curl https://agntos.dev/phone/calls/CALL_ID \
-H "Authorization: Bearer aos_xxxxx"
```
### Example: Agent calls a restaurant
```
1. POST /phone/numbers/PHONE_ID/call → {"to": "+15551234567", "tts": "Hi, I'd like to place an order"}
2. Wait for call.answered webhook
3. POST /phone/calls/CTRL_ID/gather → {"prompt": "Press 1 for English", "maxDigits": 1}
4. POST /phone/calls/CTRL_ID/dtmf → {"digits": "1"}
5. POST /phone/calls/CTRL_ID/speak → {"text": "I'd like to order two large pizzas for delivery"}
6. POST /phone/calls/CTRL_ID/hangup
```
---
## 📧 Email
### Provision Inbox (1.00 USDC)
```bash
curl -X POST https://agntos.dev/email/inboxes \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"name": "my-agent", "walletAddress": "YOUR_SOLANA_PUBKEY"}'
```
Returns: `my-agent@agntos.dev`
### Read Inbox (0.01 USDC via x402)
```bash
curl https://agntos.dev/email/inboxes/INBOX_ID/messages
```
### Send Email (0.05 USDC via x402)
```bash
curl -X POST https://agntos.dev/email/inboxes/INBOX_ID/send \
-H "Content-Type: application/json" \
-d '{"to": "user@example.com", "subject": "Hello", "body": "Message from my agent"}'
```
---
## 💻 Compute (VPS)
### List Plans (Free)
```bash
curl https://agntos.dev/compute/plans
```
Available plans:
| Type | vCPU | RAM | Disk | Price/mo |
|------|------|-----|------|----------|
| cx23 | 2 | 4GB | 40GB | $5 |
| cx33 | 4 | 8GB | 80GB | $9 |
| cx43 | 8 | 16GB | 160GB | $15 |
| cx53 | 16 | 32GB | 320GB | $28 |
| cpx11 | 2 | 2GB | 40GB | $7 |
| cpx21 | 3 | 4GB | 80GB | $15 |
| cpx31 | 4 | 8GB | 160GB | $26 |
| cpx41 | 8 | 16GB | 240GB | $48 |
| cpx51 | 16 | 32GB | 360GB | $95 |
### Upload SSH Key (0.10 USDC)
```bash
curl -X POST https://agntos.dev/compute/ssh-keys \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"name": "my-key", "publicKey": "ssh-ed25519 AAAA..."}'
```
Returns `id` — use it when creating servers.
### Create Server (5.00-95.00 USDC)
```bash
curl -X POST https://agntos.dev/compute/servers \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"name": "my-server", "serverType": "cx23", "sshKeyIds": [KEY_ID]}'
```
Response:
```json
{
"id": "12345",
"name": "my-server",
"serverType": "cx23",
"status": "running",
"ipv4": "89.167.36.207",
"message": "Server created. SSH in with: ssh root@89.167.36.207"
}
```
**Zero-access design:** You provide your SSH public key. We never see your private key. We can't access your server.
### Server Actions (0.05 USDC)
```bash
curl -X POST https://agntos.dev/compute/servers/SERVER_ID/actions \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"action": "reboot"}'
```
Actions: `reboot`, `poweron`, `poweroff`, `rebuild`, `reset`
### Resize Server (0.10 USDC)
```bash
curl -X POST https://agntos.dev/compute/servers/SERVER_ID/resize \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"serverType": "cx33"}'
```
Note: Server must be powered off to resize.
### Delete Server (0.05 USDC)
```bash
curl -X DELETE https://agntos.dev/compute/servers/SERVER_ID \
-H "Authorization: Bearer aos_xxxxx"
```
---
## 🌐 Domains
### Check Availability (Free)
```bash
curl "https://agntos.dev/domains/check?domain=example.com"
```
### Get Pricing (Free)
```bash
curl "https://agntos.dev/domains/pricing?domain=example"
```
### Register Domain (dynamic pricing via x402)
```bash
curl -X POST https://agntos.dev/domains/register \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"domain": "my-agent.dev"}'
```
### DNS Management (Free for owners)
```bash
# Get records
curl https://agntos.dev/domains/my-agent.dev/dns -H "Authorization: Bearer aos_xxxxx"
# Set records
curl -X POST https://agntos.dev/domains/my-agent.dev/dns \
-H "Authorization: Bearer aos_xxxxx" \
-H "Content-Type: application/json" \
-d '{"records": [{"type": "A", "name": "@", "value": "1.2.3.4"}]}'
```
---
## Payment Details
- **Solana:** USDC to `B1YEboAH3ZDscqni7cyVnGkcDroB2kqLXCwLs3Ez8oX3`
- **Base (EVM):** USDC to `0x7fA8aC4b42fd0C97ca983Bc73135EdbeA5bD6ab2`
- **x402 Version:** 2
- **Facilitator:** `4R67MWivvc52g9BSzQRvQyD8GshttW1QLbnj46usBrcQ`
## Webhooks
Set up webhooks to receive events:
- **SMS inbound:** Messages to your number arrive via Telnyx webhook → stored, readable via API
- **Voice events:** `call.initiated`, `call.answered`, `call.hangup`, `call.recording.saved`, `call.gather.ended`
- **Email inbound:** Emails to `*@agntos.dev` processed via Cloudflare worker → stored encryptedRelated Skills
HIPAA Compliance for AI Agents
Generate HIPAA compliance checklists, risk assessments, and audit frameworks for healthcare organizations deploying AI agents.
AgentWallet — Non-Custodial Smart Wallets for AI Agents
Non-custodial smart wallets with onchain spending limits and passkey-based human control. Supports **Base** (EVM) and **Solana**. Every wallet gets free gas on creation so your agent can transact immediately.
superpowers-parallel-agents
Use when facing 2 or more independent tasks that can be worked on without shared state - dispatches parallel subagents using sessions_spawn for concurrent investigation and execution, adapted for OpenClaw
agentscout
Discover trending AI Agent projects on GitHub, auto-generate Xiaohongshu (Little Red Book) publish-ready content including tutorials, copywriting, and cover images.
dispatch-multiple-agents
Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies. Dispatch subagents to work concurrently.
AgentStead Deploy Skill
Deploy and manage AI agents on [AgentStead](https://agentstead.com) cloud hosting.
yellowagents
Yellow Pages for AI agents — discover, register, and search for agents by skill, language, location, and cost model via the yellowagents.top API.
deepagents-implementation
Implements agents using Deep Agents. Use when building agents with create_deep_agent, configuring backends, defining subagents, adding middleware, or setting up human-in-the-loop workflows.
deepagents-code-review
Reviews Deep Agents code for bugs, anti-patterns, and improvements. Use when reviewing code that uses create_deep_agent, backends, subagents, middleware, or human-in-the-loop patterns. Catches common configuration and usage mistakes.
deepagents-architecture
Guides architectural decisions for Deep Agents applications. Use when deciding between Deep Agents vs alternatives, choosing backend strategies, designing subagent systems, or selecting middleware approaches.
🔮 Divination — Oracle Toolkit for AI Agents
*"At every crossroads lies a message. Chance is the messenger. You are the reader."*
durable-agents
Build autonomous multi-agent pipelines with Mastra (agents only) and Trigger.dev (all workflows and tasks). Use when creating AI agents, designing multi-stage pipelines, defining permissioned tools, structuring agent handoffs, storing agentic outputs to a database, or building durable task chains with retries and fan-out.