Demos › Agents

Agents

A Minecraft server sitting on a home network — no public IP, no firewall rules, CGNAT, the works. Three REST endpoints, visible in the catalog, paying their owner USDC for every call. This is what Agents do.

The Connection Is Reversed

Consumer side
Consumer's app
Normal HTTPS call
Sertone network
Persistent WebSocket
(outbound, agent → control center)
Owner side — no public IP
Your control center
Relay through WebSocket
Agent process
localhost call
Minecraft server

Call the Minecraft Server APIs

These three APIs are served by a simulated Minecraft server connected via the Sertone Agent relay. The architecture is identical to a real deployment — including the latency profile of a relayed call.

GET /mc/status
Server info — $0.001/call

Check if the Minecraft server is online, how many players are connected, and the current server version.

Hit "Run Query" to call the API through the Sertone network.
GET /mc/players
Player list — $0.001/call

Get the current list of players connected to the server.

Hit "Run Query" to call the API through the Sertone network.
POST /mc/say
Broadcast message — $0.002/call

Send a message that appears in the in-game chat for all connected players.

Enter a message and hit "Send Message" to broadcast it to all players.
Agent Relay Log
Relay log — API calls will appear here in real time

How a Consumer Calls These APIs

Standard HTTP — same as any REST API. The agent relay is completely transparent to the consumer.

# Check Minecraft server status
curl -X GET https://sertone.net/mc/status \
  -H "X-API-Key: your_consumer_key" \
  -H "Content-Type: application/json"

# Get player list
curl -X GET https://sertone.net/mc/players \
  -H "X-API-Key: your_consumer_key"

# Broadcast a message
curl -X POST https://sertone.net/mc/say \
  -H "X-API-Key: your_consumer_key" \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello from the API!"}'
import requests

BASE = "https://sertone.net"
HEADERS = {
    "X-API-Key": "your_consumer_key",
    "Content-Type": "application/json"
}

# Server status
status = requests.get(f"{BASE}/mc/status", headers=HEADERS)
print(status.json())

# Player list
players = requests.get(f"{BASE}/mc/players", headers=HEADERS)
print(players.json())

# Broadcast message
resp = requests.post(f"{BASE}/mc/say",
    json={"message": "Hello from the API!"},
    headers=HEADERS)
print(resp.json())
// Server status
const status = await fetch('https://sertone.net/mc/status', {
  headers: { 'X-API-Key': 'your_consumer_key' }
});
console.log(await status.json());

// Player list
const players = await fetch('https://sertone.net/mc/players', {
  headers: { 'X-API-Key': 'your_consumer_key' }
});
console.log(await players.json());

// Broadcast message
const resp = await fetch('https://sertone.net/mc/say', {
  method: 'POST',
  headers: {
    'X-API-Key': 'your_consumer_key',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ message: 'Hello from the API!' }),
});
console.log(await resp.json());

What Can You Expose with an Agent?

🎮

Game Servers

Server status, player lists, stats leaderboards, in-game commands. Any game that has a local HTTP API or RCON protocol.

🏭

Enterprise Systems

SAP, PeopleSoft, Oracle ERP — systems that cannot be put on the public internet but whose data should be accessible to authorized partners.

🏠

Home Automation

Home Assistant, Hubitat, local sensors. Sell readings or control commands without exposing your home network.

🧠

Local AI Models

Ollama, LM Studio, or any private model running on your GPU. Sell inference without paying cloud hosting fees.

Ready to expose your service?

Install the agent, connect it to your control center, and start earning USDC on any service you already run.

Read the docs Quick Start