Delivery Adapters
Every advanced workflow routine has two separable halves. The workflow body collects data and reasons about it to produce a report. The delivery adapter takes that report and writes it somewhere a human will see it, such as a Slack channel, a Slack canvas, or an IT Glue document. The two halves are joined by a report payload, the finished report the body hands off. Swap the adapter and the same workflow delivers to a different target without touching its logic.
Why split body from delivery
Keeping delivery separate from the workflow body means a routine's logic — what it reads, how it classifies, what it decides — never changes when you change where the report lands. A triage workflow that posts to Slack today can post to an IT Glue document tomorrow by swapping one section of the routine prompt and one connector. The body produces a report payload; the adapter consumes it. That payload is the interface between them.
The adapter contract
Each delivery adapter is documented by four fields. To add a new delivery target, fill in these four and you have a working adapter.
- Connector — the MCP connector the adapter writes through.
permitted_tools— the exact tool names the routine must list for that connector. An empty list means the routine runs with no tools and silently does nothing.- Write snippet — the instruction added to the routine prompt that tells the agent how to deliver the report.
- Limits — what the adapter can and cannot do, so you pick the right one.
Shipped adapters
These adapters are documented and proven. At a glance:
| Adapter | Connector | permitted_tools | Use |
|---|---|---|---|
| Slack summary | Slack | slack_send_message | A short report straight into a channel. |
| Slack canvas | Slack | slack_create_canvas, slack_send_message | A long report as a canvas, with a message linking it. |
| IT Glue document | WYRE MCP Gateway (itglue) | create_document, update_document_section, search_documents | A living document that reruns update in place. |
Slack summary
- Connector — Slack.
permitted_tools—slack_send_message.- Write snippet — post a one-paragraph summary to the channel.
- Limits — plain text, no rich layout. Best for a short result a human reads at a glance; a long report becomes an unscannable wall of text.
Slack canvas
- Connector — Slack.
permitted_tools—slack_create_canvas,slack_send_message.- Write snippet — create a canvas titled
<report name> — <date>with the full report; post a summary message linking it. - Limits — a canvas is markdown-ish, so it carries structure a plain message cannot. One canvas is created per run, so each run leaves its own dated artefact rather than updating a single document.
IT Glue document
- Connector — WYRE MCP Gateway (
itglue). permitted_tools—create_document,update_document_section,search_documents.- Write snippet — search for an existing document named
<report name>in the target IT Glue org; if found, update its section, else create it. - Limits — needs a target org ID baked into the routine. Because it updates in place, reruns converge on a single document rather than accumulating artefacts.
Documented but not shipped
These targets are understood but not yet proven adapters. Each is a contract stub — enough to know the connector situation and why it is deferred or blocked.
- Notion. A Notion connector exposes
notion-create-pagesandnotion-update-page, which is enough to write a report. It works — it is deferred only because Slack and IT Glue cover the current need. - Hudu. Hudu is an IT documentation target like IT Glue, but whether the gateway exposes a write-capable Hudu tool is unverified. Confirm the gateway capability before treating it as an adapter.
- SharePoint. Blocked. The available Microsoft 365 connector is search/read only — it cannot upload or write a document. A SharePoint delivery adapter needs a write-capable connector added gateway-side first.
- Email. Deferred. A report could be delivered by email, but no email adapter has been built yet; Slack and IT Glue are the current targets.
Adding a new adapter
To deliver a workflow's report to a new target, pick a connector that can write there,
confirm it exposes a write tool, and fill in the four contract fields above — Connector,
permitted_tools, Write snippet, Limits. The workflow body never changes: it
still produces the same report payload. Only the adapter — the connector, the permitted
tools, and the write snippet in the routine prompt — is swapped.
A delivery target you'd like documented as an adapter?
Open an issue
in the msp-claude-plugins repository.