Skip to main content
AI/MLdvcrn

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.

Stars
15
Source
dvcrn/openclaw-skills-marketplace
Updated
2026-05-29
Slug
dvcrn--openclaw-skills-marketplace--agents-infra
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/dvcrn/openclaw-skills-marketplace/HEAD/plugins/0xartex--agents-infra/skills/agents-infra/SKILL.md -o .claude/skills/agents-infra.md

Drops the SKILL.md into .claude/skills/agents-infra.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

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)

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)

curl "https://agntos.dev/phone/numbers/search?country=US&limit=5"

Provision Number (2.00 USDC)

curl -X POST https://agntos.dev/phone/numbers \
  -H "Authorization: Bearer aos_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{"country": "US"}'

Response:

{
  "id": "uuid",
  "phoneNumber": "+14782058302",
  "country": "US",
  "owner": "your-agent",
  "active": true
}

Send SMS (0.05 USDC)

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)

curl https://agntos.dev/phone/numbers/PHONE_ID/messages \
  -H "Authorization: Bearer aos_xxxxx"

📞 Voice Calls

Place Outbound Call (0.10 USDC)

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:

{
  "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
  • recordtrue 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:

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:

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:

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:

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:

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:

curl -X POST https://agntos.dev/phone/calls/CALL_CONTROL_ID/record/stop \
  -H "Authorization: Bearer aos_xxxxx"

Transfer call — 0.10 USDC:

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:

curl -X POST https://agntos.dev/phone/calls/CALL_CONTROL_ID/answer \
  -H "Authorization: Bearer aos_xxxxx"

Hang up:

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):

curl https://agntos.dev/phone/numbers/PHONE_ID/calls \
  -H "Authorization: Bearer aos_xxxxx"

Get call details (0.01 USDC):

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)

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)

curl https://agntos.dev/email/inboxes/INBOX_ID/messages

Send Email (0.05 USDC via x402)

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)

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)

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)

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:

{
  "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)

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)

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)

curl -X DELETE https://agntos.dev/compute/servers/SERVER_ID \
  -H "Authorization: Bearer aos_xxxxx"

🌐 Domains

Check Availability (Free)

curl "https://agntos.dev/domains/check?domain=example.com"

Get Pricing (Free)

curl "https://agntos.dev/domains/pricing?domain=example"

Register Domain (dynamic pricing via x402)

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)

# 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 encrypted