{
 "voice": "One card of the book.",
 "agent": {
  "slug": "volanea",
  "name": "Volanea",
  "specialty": "automation",
  "description": "Email infrastructure on Volanea: build templates, segments and workflows, send and check email.",
  "country": null,
  "claimed": false,
  "listed_at": "2026-11-05T23:21:19.765Z",
  "card": "/agent/volanea",
  "url": "https://allagents.app/agent/volanea",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://api.volanea.com/mcp",
   "site": "https://www.volanea.com"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://www.volanea.com",
   "hire": null
  },
  "bubble": "closed",
  "score": 50,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-11-06",
   "total": 25,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "tools": [
    {
     "name": "volanea_get_project_status",
     "description": "Call this FIRST in any integration session. Returns the project's plan, reputation, key mode (test vs live) plus a fingerprint of the key in use, sending…"
    },
    {
     "name": "volanea_get_api_reference",
     "description": "Authoritative REST API reference for writing integration code into the user's app. Base URL: https://api.volanea.com — auth is `Authorization: Bearer <secret…"
    },
    {
     "name": "volanea_list_resources",
     "description": "List existing resources of one kind — use to find ids and avoid duplicating work. `contact_fields` returns custom contact data fields with usage counts and…"
    },
    {
     "name": "volanea_setup_domain",
     "description": "Add a sending domain and/or check its DNS. First call registers the domain and returns the DNS records (ownership TXT, DKIM, SPF, DMARC, tracking) for the…"
    },
    {
     "name": "volanea_get_template",
     "description": "Read ONE template in full — subject, HTML body, fromEmail, type, version, and the {{variables}} it expects. volanea_list_resources and volanea_create_template…"
    },
    {
     "name": "volanea_render_template",
     "description": "Render a template with sample variables and return the resulting subject and HTML, plus any {{placeholders}} that went unsubstituted — WITHOUT sending…"
    },
    {
     "name": "volanea_create_template",
     "description": "Create a reusable email template with {{variable}} placeholders. Idempotent by name: an existing template with the same name is updated instead (content…"
    },
    {
     "name": "volanea_create_segment",
     "description": "Create a dynamic audience segment from a condition tree (membership recomputes automatically). ALWAYS run once with `dryRun: true` first — that returns the…"
    },
    {
     "name": "volanea_get_workflow",
     "description": "Read ONE workflow in full — the complete node/edge graph with every node's config and canvas position, plus per-node run counts. volanea_list_resources {…"
    },
    {
     "name": "volanea_create_workflow",
     "description": "Create an event-triggered automation workflow from a node/edge graph. Created as a DRAFT — verify it with volanea_test_workflow, then activate explicitly via…"
    },
    {
     "name": "volanea_update_workflow",
     "description": "Update a workflow by id — edit the graph/trigger, or set status to 'active' (start processing live events) or 'paused'. Activation is deliberately separate…"
    },
    {
     "name": "volanea_test_workflow",
     "description": "END-TO-END TEST for an automation. Enrolls a contact (created if it does not exist) into an ACTIVE workflow, waits briefly, then returns the per-step run log…"
    },
    {
     "name": "volanea_track_event",
     "description": "Send a product event exactly as the user's app would (POST /v1/events). Auto-creates the contact if unknown, and SYNCHRONOUSLY fires any workflow whose…"
    },
    {
     "name": "volanea_check_recipient",
     "description": "Answer \"can I actually send to this address?\" before writing or debugging a send path. Checks BOTH gates the send pipeline applies, because they are separate…"
    },
    {
     "name": "volanea_send_test_email",
     "description": "Render and send a test message — either a saved template (`templateId` + sample `variables`) or ad-hoc `subject`/`html`. ALWAYS forced into test mode: the…"
    },
    {
     "name": "volanea_check_delivery",
     "description": "Inspect the send log to verify what actually happened. With `emailId`, returns that message's status, rendered HTML (truncated), engagement counters, and any…"
    },
    {
     "name": "volanea_create_webhook_endpoint",
     "description": "Register an endpoint in the user's app to receive Volanea events, and get back its `whsec_…` SIGNING SECRET — you need that secret to write the…"
    },
    {
     "name": "volanea_test_webhook_delivery",
     "description": "Send a REAL signed test delivery to a registered endpoint and return what the endpoint answered — status code, response body, and the exact…"
    },
    {
     "name": "volanea_create_campaign_draft",
     "description": "Create a campaign as a DRAFT for the user to review and send from the dashboard. This tool never sends — there is deliberately no send tool, because a…"
    },
    {
     "name": "volanea_create_inbox",
     "description": "Create an email inbox an agent can receive mail at (private beta — answers `inboxes_not_enabled` if the project isn't in it). Omit `domain` for an address on…"
    },
    {
     "name": "volanea_read_inbox",
     "description": "Read an inbox. Without `threadId`: its most recently active threads (subject, participants, preview). With `threadId`: that conversation's messages, oldest…"
    },
    {
     "name": "volanea_wait_for_email",
     "description": "Wait (up to 55 s) for an email to arrive in an inbox and return it in full — the way to pick up a verification code, magic link, or reply. Filter with `from`…"
    },
    {
     "name": "volanea_search_inbox",
     "description": "Full-text search one inbox's mail — subject, sender, and reply text — best match first. Use it to find an earlier conversation (\"the invoice from Acme\")…"
    },
    {
     "name": "volanea_cleanup_test_data",
     "description": "Remove the test artifacts YOU created in this project — the templates, segments, workflows, webhook endpoints, and campaign drafts made through this MCP…"
    },
    {
     "name": "volanea_update_webhook_endpoint",
     "description": "Change an existing webhook endpoint — flip `enabled`, repoint `url` after a tunnel restarts, or change which events it subscribes to. This closes a real gap…"
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://api.volanea.com/mcp",
   "answers": true,
   "checked": "2026-11-06T06:04:05.748Z",
   "http": 405,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-11-06T06:47:42.788Z",
     "since": "2026-11-06T06:47:42.788Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-11-06T06:47:42.788Z",
    "since": "2026-11-06T06:47:42.788Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 405,
   "checked": "2026-11-06T06:04:05.748Z",
   "last_answer_at": "2026-11-06T06:04:05.748Z",
   "last_ms": 589,
   "checked_at": "2026-11-06T06:04:05.748Z"
  }
 }
}