{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_s4jpkqudngch","handle":"volanea","url":"https://wellknown.network/agents/volanea","links":{"self":"https://wellknown.network/agents/volanea/record.json","html":"https://wellknown.network/agents/volanea","markdown":"https://wellknown.network/agents/volanea/record.md","api":"https://wellknown.network/api/v1/agents/volanea","status":"https://wellknown.network/api/v1/agents/volanea/status","claim":"https://wellknown.network/agents/volanea/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/volanea/claim.json","badge":"https://wellknown.network/agents/volanea/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/volanea/history","tools":"https://wellknown.network/api/v1/agents/volanea/tools"},"ard":{"identifier":"urn:air:api.volanea.com:server:volanea","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Volanea","summary":"Email infrastructure on Volanea: build templates, segments and workflows, send and check email.","description":"Email infrastructure on Volanea: build templates, segments and workflows, send and check email.","publisher":{"name":"Pankaj-bit361","url":null},"homepage":"https://www.volanea.com","repository":"https://github.com/Pankaj-bit361/volanea-mcp","version":"1.0.2","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.volanea.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-17T06:54:43.23189Z","publishedAt":"2026-10-17T06:54:43.23189Z","registryName":"io.github.Pankaj-bit361/volanea"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"productivity.email","name":"Email","confidence":1,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"ai.prompting","name":"Prompt Management","confidence":0.938,"provenance":"derived"},{"slug":"code.debugging","name":"Debugging","confidence":0.54,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"content.marketing","name":"Marketing","confidence":0.525,"provenance":"derived"},{"slug":"data.apis","name":"API Access","confidence":0.525,"provenance":"derived"}],"categories":["ai","analytics","code","content","data","dev","productivity","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 2h ago.","lastOkAt":"2026-10-22T16:29:33.968Z","lastProbedAt":"2026-10-22T16:29:33.968Z","statusComputedAt":"2026-10-22T16:32:55.179Z","reliability30d":{"probes":14,"successRate":1,"p50Ms":675,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":14,"ok":14,"authBoundaryOk":0,"serviceOk":14,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-22T16:29:33.968Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":137,"error":null,"detail":{"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 domain"},{"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 ke"},{"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 `eve"},{"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 user "},{"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 b"},{"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 anything "},{"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 changes"},{"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 live"},{"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 { workfl"},{"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 vo"},{"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 from"},{"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 trigger "},{"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 re"},{"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 messa"},{"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 er"},{"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 signature-verifi"},{"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 X-Volanea-Signature "},{"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 mistaken "},{"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 th"},{"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 firs"},{"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` an"},{"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\") before "},{"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 server,"},{"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: vo"},{"name":"volanea_delete_resource","description":"Permanently delete ONE resource by id. Deliberately mirrors volanea_list_resources so the two read as a pair, and deliberately previews unless you pass `confirm"},{"name":"volanea_report_missing_tool","description":"Report that this server lacks a tool you needed, so the gap gets closed instead of silently worked around. Call it at the moment you fall back to a raw REST cal"}],"toolCount":27,"toolsHash":"e349894b33de273386d082b4aacc810c3ccec25167011a4baed6d0d9a3906824","serverName":"volanea","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T09:31:27.490Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":136,"error":null,"detail":{"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 domain"},{"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 ke"},{"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 `eve"},{"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 user "},{"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 b"},{"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 anything "},{"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 changes"},{"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 live"},{"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 { workfl"},{"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 vo"},{"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 from"},{"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 trigger "},{"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 re"},{"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 messa"},{"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 er"},{"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 signature-verifi"},{"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 X-Volanea-Signature "},{"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 mistaken "},{"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 th"},{"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 firs"},{"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` an"},{"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\") before "},{"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 server,"},{"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: vo"},{"name":"volanea_delete_resource","description":"Permanently delete ONE resource by id. Deliberately mirrors volanea_list_resources so the two read as a pair, and deliberately previews unless you pass `confirm"},{"name":"volanea_report_missing_tool","description":"Report that this server lacks a tool you needed, so the gap gets closed instead of silently worked around. Call it at the moment you fall back to a raw REST cal"}],"toolCount":27,"toolsHash":"e349894b33de273386d082b4aacc810c3ccec25167011a4baed6d0d9a3906824","serverName":"volanea","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T03:31:05.198Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":135,"error":null,"detail":{"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 domain"},{"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 ke"},{"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 `eve"},{"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 user "},{"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 b"},{"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 anything "},{"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 changes"},{"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 live"},{"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 { workfl"},{"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 vo"},{"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 from"},{"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 trigger "},{"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 re"},{"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 messa"},{"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 er"},{"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 signature-verifi"},{"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 X-Volanea-Signature "},{"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 mistaken "},{"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 th"},{"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 firs"},{"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` an"},{"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\") before "},{"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 server,"},{"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: vo"},{"name":"volanea_delete_resource","description":"Permanently delete ONE resource by id. Deliberately mirrors volanea_list_resources so the two read as a pair, and deliberately previews unless you pass `confirm"},{"name":"volanea_report_missing_tool","description":"Report that this server lacks a tool you needed, so the gap gets closed instead of silently worked around. Call it at the moment you fall back to a raw REST cal"}],"toolCount":27,"toolsHash":"e349894b33de273386d082b4aacc810c3ccec25167011a4baed6d0d9a3906824","serverName":"volanea","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T20:30:24.547Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":159,"error":null,"detail":{"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 domain"},{"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 ke"},{"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 `eve"},{"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 user "},{"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 b"},{"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 anything "},{"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 changes"},{"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 live"},{"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 { workfl"},{"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 vo"},{"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 from"},{"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 trigger "},{"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 re"},{"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 messa"},{"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 er"},{"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 signature-verifi"},{"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 X-Volanea-Signature "},{"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 mistaken "},{"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 th"},{"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 firs"},{"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` an"},{"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\") before "},{"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 server,"},{"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: vo"},{"name":"volanea_delete_resource","description":"Permanently delete ONE resource by id. Deliberately mirrors volanea_list_resources so the two read as a pair, and deliberately previews unless you pass `confirm"},{"name":"volanea_report_missing_tool","description":"Report that this server lacks a tool you needed, so the gap gets closed instead of silently worked around. Call it at the moment you fall back to a raw REST cal"}],"toolCount":27,"toolsHash":"e349894b33de273386d082b4aacc810c3ccec25167011a4baed6d0d9a3906824","serverName":"volanea","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T11:27:54.707Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":130,"error":null,"detail":{"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 domain"},{"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 ke"},{"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 `eve"},{"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 user "},{"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 b"},{"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 anything "},{"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 changes"},{"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 live"},{"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 { workfl"},{"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 vo"},{"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 from"},{"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 trigger "},{"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 re"},{"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 messa"},{"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 er"},{"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 signature-verifi"},{"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 X-Volanea-Signature "},{"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 mistaken "},{"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 th"},{"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 firs"},{"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` an"},{"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\") before "},{"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 server,"},{"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: vo"},{"name":"volanea_delete_resource","description":"Permanently delete ONE resource by id. Deliberately mirrors volanea_list_resources so the two read as a pair, and deliberately previews unless you pass `confirm"},{"name":"volanea_report_missing_tool","description":"Report that this server lacks a tool you needed, so the gap gets closed instead of silently worked around. Call it at the moment you fall back to a raw REST cal"}],"toolCount":27,"toolsHash":"e349894b33de273386d082b4aacc810c3ccec25167011a4baed6d0d9a3906824","serverName":"volanea","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T03:26:41.092Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":130,"error":null,"detail":{"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 domain"},{"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 ke"},{"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 `eve"},{"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 user "},{"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 b"},{"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 anything "},{"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 changes"},{"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 live"},{"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 { workfl"},{"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 vo"},{"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 from"},{"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 trigger "},{"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 re"},{"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 messa"},{"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 er"},{"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 signature-verifi"},{"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 X-Volanea-Signature "},{"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 mistaken "},{"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 th"},{"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 firs"},{"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` an"},{"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\") before "},{"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 server,"},{"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: vo"},{"name":"volanea_delete_resource","description":"Permanently delete ONE resource by id. Deliberately mirrors volanea_list_resources so the two read as a pair, and deliberately previews unless you pass `confirm"},{"name":"volanea_report_missing_tool","description":"Report that this server lacks a tool you needed, so the gap gets closed instead of silently worked around. Call it at the moment you fall back to a raw REST cal"}],"toolCount":27,"toolsHash":"e349894b33de273386d082b4aacc810c3ccec25167011a4baed6d0d9a3906824","serverName":"volanea","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T21:27:47.355Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":128,"error":null,"detail":{"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 domain"},{"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 ke"},{"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 `eve"},{"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 user "},{"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 b"},{"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 anything "},{"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 changes"},{"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 live"},{"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 { workfl"},{"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 vo"},{"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 from"},{"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 trigger "},{"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 re"},{"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 messa"},{"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 er"},{"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 signature-verifi"},{"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 X-Volanea-Signature "},{"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 mistaken "},{"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 th"},{"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 firs"},{"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` an"},{"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\") before "},{"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 server,"},{"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: vo"},{"name":"volanea_delete_resource","description":"Permanently delete ONE resource by id. Deliberately mirrors volanea_list_resources so the two read as a pair, and deliberately previews unless you pass `confirm"},{"name":"volanea_report_missing_tool","description":"Report that this server lacks a tool you needed, so the gap gets closed instead of silently worked around. Call it at the moment you fall back to a raw REST cal"}],"toolCount":27,"toolsHash":"e349894b33de273386d082b4aacc810c3ccec25167011a4baed6d0d9a3906824","serverName":"volanea","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T15:31:12.991Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1482,"error":null,"detail":{"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 domain"},{"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 ke"},{"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 `eve"},{"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 user "},{"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 b"},{"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 anything "},{"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 changes"},{"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 live"},{"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 { workfl"},{"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 vo"},{"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 from"},{"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 trigger "},{"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 re"},{"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 messa"},{"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 er"},{"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 signature-verifi"},{"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 X-Volanea-Signature "},{"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 mistaken "},{"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 th"},{"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 firs"},{"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` an"},{"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\") before "},{"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 server,"},{"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: vo"},{"name":"volanea_delete_resource","description":"Permanently delete ONE resource by id. Deliberately mirrors volanea_list_resources so the two read as a pair, and deliberately previews unless you pass `confirm"},{"name":"volanea_report_missing_tool","description":"Report that this server lacks a tool you needed, so the gap gets closed instead of silently worked around. Call it at the moment you fall back to a raw REST cal"}],"toolCount":27,"toolsHash":"e349894b33de273386d082b4aacc810c3ccec25167011a4baed6d0d9a3906824","serverName":"volanea","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T09:27:44.284Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":399,"error":null,"detail":{"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 domain"},{"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 ke"},{"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 `eve"},{"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 user "},{"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 b"},{"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 anything "},{"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 changes"},{"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 live"},{"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 { workfl"},{"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 vo"},{"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 from"},{"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 trigger "},{"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 re"},{"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 messa"},{"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 er"},{"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 signature-verifi"},{"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 X-Volanea-Signature "},{"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 mistaken "},{"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 th"},{"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 firs"},{"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` an"},{"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\") before "},{"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 server,"},{"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: vo"},{"name":"volanea_delete_resource","description":"Permanently delete ONE resource by id. Deliberately mirrors volanea_list_resources so the two read as a pair, and deliberately previews unless you pass `confirm"},{"name":"volanea_report_missing_tool","description":"Report that this server lacks a tool you needed, so the gap gets closed instead of silently worked around. Call it at the moment you fall back to a raw REST cal"}],"toolCount":27,"toolsHash":"e349894b33de273386d082b4aacc810c3ccec25167011a4baed6d0d9a3906824","serverName":"volanea","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T03:29:18.294Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1469,"error":null,"detail":{"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 domain"},{"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 ke"},{"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 `eve"},{"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 user "},{"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 b"},{"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 anything "},{"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 changes"},{"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 live"},{"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 { workfl"},{"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 vo"},{"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 from"},{"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 trigger "},{"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 re"},{"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 messa"},{"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 er"},{"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 signature-verifi"},{"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 X-Volanea-Signature "},{"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 mistaken "},{"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 th"},{"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 firs"},{"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` an"},{"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\") before "},{"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 server,"},{"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: vo"},{"name":"volanea_delete_resource","description":"Permanently delete ONE resource by id. Deliberately mirrors volanea_list_resources so the two read as a pair, and deliberately previews unless you pass `confirm"},{"name":"volanea_report_missing_tool","description":"Report that this server lacks a tool you needed, so the gap gets closed instead of silently worked around. Call it at the moment you fall back to a raw REST cal"}],"toolCount":27,"toolsHash":"e349894b33de273386d082b4aacc810c3ccec25167011a4baed6d0d9a3906824","serverName":"volanea","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"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 domain"},{"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 ke"},{"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 `eve"},{"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 user "},{"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 b"},{"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 anything "},{"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 changes"},{"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 live"},{"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 { workfl"},{"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 vo"},{"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 from"},{"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 trigger "},{"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 re"},{"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 messa"},{"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 er"},{"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 signature-verifi"},{"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 X-Volanea-Signature "},{"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 mistaken "},{"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 th"},{"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 firs"},{"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` an"},{"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\") before "},{"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 server,"},{"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: vo"},{"name":"volanea_delete_resource","description":"Permanently delete ONE resource by id. Deliberately mirrors volanea_list_resources so the two read as a pair, and deliberately previews unless you pass `confirm"},{"name":"volanea_report_missing_tool","description":"Report that this server lacks a tool you needed, so the gap gets closed instead of silently worked around. Call it at the moment you fall back to a raw REST cal"}],"package":null,"toolSurface":{"id":"ts_cne57a64gtr4","endpointId":"ep_uc9k28f3yz7x","hash":"e349894b33de273386d082b4aacc810c3ccec25167011a4baed6d0d9a3906824","toolCount":27,"serverName":"volanea","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-19T01:29:10.186Z","lastSeenAt":"2026-10-22T16:29:33.967Z","observations":14,"toolNames":["volanea_get_project_status","volanea_get_api_reference","volanea_list_resources","volanea_setup_domain","volanea_get_template","volanea_render_template","volanea_create_template","volanea_create_segment","volanea_get_workflow","volanea_create_workflow","volanea_update_workflow","volanea_test_workflow","volanea_track_event","volanea_check_recipient","volanea_send_test_email","volanea_check_delivery","volanea_create_webhook_endpoint","volanea_test_webhook_delivery","volanea_create_campaign_draft","volanea_create_inbox","volanea_read_inbox","volanea_wait_for_email","volanea_search_inbox","volanea_cleanup_test_data","volanea_update_webhook_endpoint","volanea_delete_resource","volanea_report_missing_tool"],"distinctSurfaces":1},"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.Pankaj-bit361/volanea","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.Pankaj-bit361%2Fvolanea","firstSeenAt":"2026-10-19T01:20:23.456Z","fetchedAt":"2026-10-22T17:19:08.768Z","normalizedAt":"2026-10-22T17:19:08.768Z"}]},"firstSeenAt":"2026-10-19T01:20:23.456Z","updatedAt":"2026-10-22T16:35:04.901Z"}