Hermes (and similar self-hosted agents) already give you memory, cron, terminal, and MCP. What they still struggle with is the boring production layer: public HTTPS files, human spend gates that reach Discord, and website checks that keep running when the VPS process is offline.
Agent Media Tools now ships that layer as three related capabilities — all on the same REST API and MCP connection you already use.
Quick install: hermes mcp add agent-media-tools --url https://agentmediatools.com/api/mcp --auth header · Full brief: /llms.txt
When an agent writes report.pdf only on disk, Discord and clients cannot open it. Artifacts store the bytes and return a public URL, with plan-tier size and retention:
| Plan | Max size | Max TTL | Active files |
|---|---|---|---|
| Free | 5 MB | 24 hours | 10 |
| Pro | 25 MB | 30 days | 100 |
| Builder | 50 MB | 90 days | 250 |
curl -X POST https://agentmediatools.com/api/artifact \
-H "Authorization: Bearer mt_xxx" \
-H "Content-Type: application/json" \
-d '{"content":"# Weekly report","filename":"report.md","label":"ops","ttl_hours":168}'
# → url, raw_url, content_hash, expires_at
# List: GET /api/artifacts
# Delete: DELETE /api/artifact/:slug
# MCP: create_artifact, list_artifacts, delete_artifact
Approvals already return an approve_url. Now a human can wire Discord, Telegram, and email once per agent key so requests land in the same channels as Hermes messages.
# Human (logged in session)
POST /api/agent/keys/:id/notify-channels
{
"discord_webhook": "https://discord.com/api/webhooks/…",
"telegram_bot_token": "123:ABC…",
"telegram_chat_id": "987654321"
}
# Agent
POST /api/agent/approvals
{"action":"purchase","summary":"Buy 100 credits","amount_cents":500}
# → approve_url + notified.email/discord/telegram flags
# Poll GET /api/agent/approvals/:id until approved|denied|expired
Webhook hosts are restricted to Discord; Telegram calls only the official API. Secrets are masked when you read channels back.
Local cron dies with the process. Watchdog runs on our side: Free 2 watches, Pro 25, Builder 50. On change: account webhook, Discord, and/or email, plus event history.
POST /api/agent/watch
{
"url": "https://example.com/pricing",
"label": "Competitor pricing",
"interval_minutes": 60,
"discord_webhook": "https://discord.com/api/webhooks/…"
}
GET /api/agent/watch
GET /api/agent/watch/:id/history
PATCH /api/agent/watch/:id {"action":"pause"}
Only public URLs are accepted (private/reserved networks are blocked). See the playbook: Website monitoring workflow.
Pricing details: /pricing. API reference: artifacts, watchdog, approvals.
1. First win — free API call and key · 2. Install MCP for Hermes · 3. Create an artifact and paste the URL into Discord.
Related: Inter-agent mailbox · Webhooks for pipelines · One API key, 70+ tools