Post to Discord

flurryport:discord-postdeliveryv1first-partysha256:1cf7d728004fNeeds: read/write agent token

Let your AI post to Discord through a channel webhook the model never sees.

Deliver a message to a Discord channel via a channel webhook. The webhook URL is the secret and is channel-scoped: one install posts to one channel.

The credential never enters the model context: it lives in the FlurryPORT secret store, deliveries are signed server-side, and every send returns a receipt your agent can quote.

What this is

Your AI posts to a Discord channel through a channel webhook it never sees. With Discord, the webhook URL IS the credential, so the whole URL lives server-side as the pipe's secret and the AI only ever sends the message content.

Setup in two steps

  1. Discord side. In the channel: Edit channel, Integrations, Webhooks, New webhook, copy the webhook URL.
  2. FlurryPORT side. Your AI requests secret setup and FlurryPORT emails you a secure page. Paste the URL there. One install posts to one channel, because the webhook itself is channel-scoped.

Credential custody

The URL is stored encrypted and used server-side at delivery. Stored responses are scrubbed if it echoes back. To rotate, recreate the webhook in Discord and paste the new URL on the same page.

What to expect

Receipts show Discord's answer: success is a quiet 204. Content caps at 2000 characters, and the per-channel rate limit is roughly five posts every two seconds, which is plenty for notifications and too little for spam, by design.

Install with your agent

npx flurryport mcp

Point your agent at the FlurryPORT MCP server (npx flurryport mcp) and ask it for the flurryport:discord-post recipe. Works from AI clients that can run a local process: desktop apps and terminal agents. Web-only chat clients cannot reach a local MCP server; open a desktop client instead.

Tools your agent gains

flry_discord_post
Post a message to the configured Discord channel. Input: text (required, max 2000 chars), title (optional, rendered bold above the text).

Setup walkthrough

  1. DISCORD_WEBHOOK_URL: In the Discord channel: Edit Channel, Integrations, Webhooks, New Webhook, Copy Webhook URL. The URL itself is the credential; paste it in the FlurryPORT secret page.

Intent schema

{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "title": {
      "type": "string"
    },
    "text": {
      "type": "string",
      "maxLength": 2000
    }
  }
}

Transformation

{ "content": ($exists($body.title) ? "**" & $body.title & "**\n" : "") & $body.text }

Delivery target

POST $secrets.DISCORD_WEBHOOK_URL

Placeholders like $secrets.NAME resolve server-side at delivery, never in the agent.

Gotchas

Where this fits

Related recipes

flurryport:slack-postdelivery

Let your AI post to Slack without ever seeing the bot token.

flurryport:telegram-senddelivery

Send Telegram messages from your AI; the bot token stays on the server.

flurryport:airtable-adddelivery

Let your AI add records to an Airtable table; the token stays server-side.

flurryport:azure-devops-managedelivery

Create and update Azure DevOps work items in one batched pipe: priority, state, tags, and sprint included.

flurryport:azure-devops-querydelivery

Query Azure DevOps work items with WIQL and read the matching ids back, without your AI ever holding the PAT.

flurryport:azure-devops-readdelivery

Read fields for a batch of Azure DevOps work items by id: title, state, tags, priority, iteration.