Pricing

Every tier includes the complete scripting engine, all triggers, and both editing modes. Tiers scale across hourly script execution time, key-value storage, outbound HTTP requests, concurrent scripts, and linked YouTube channels. Pick the tier that matches your server's activity.

Beta pricing: Tier limits and pricing are subject to tuning based on real server usage. Have feedback on resource limits? Join the support server to share suggestions.

Free

$0/mo

For a small friend-group server, and for trying everything out.

  • 30s runtime/hr
  • 0.5 MB storage
  • 10 fetch() calls/hr
  • 1 YouTube channel

Pro

$5.99/mo

For a large, busy server running a lot of scripts on high message volume.

  • 300s runtime/hr
  • 4 MB storage
  • 60 fetch() calls/hr
  • 6 YouTube channels
Upgrade to Pro

Ultra

$14.99/mo

Twice Pro's headroom, for the biggest servers and the heaviest script sets.

  • 600s runtime/hr
  • 10 MB storage
  • 120 fetch() calls/hr
  • 12 YouTube channels
Upgrade to Ultra

Compare every limit

Runtime and fetch are hourly budgets resetting on a rolling window. When a limit is reached, scripts halt without rollback. Storage is persistent across your key-value store and media uploads. YouTube channels define how many feeds can be linked simultaneously.

LimitFreePlusProUltra
Triggers included
Every trigger is included on every tier: slash commands, reactions, member joins, Twitch stream events, and YouTube video/stream releases.
All 84 triggersAll 84 triggersAll 84 triggersAll 84 triggers
Script editor
The same Monaco code editor on every tier, with real-time autocompletion against the full script API and syntax highlighting.
Monaco, full APIMonaco, full APIMonaco, full APIMonaco, full API
Write-only secrets
Store API keys and webhook secrets encrypted. Scripts access them safely without exposing credentials to moderators.
IncludedIncludedIncludedIncluded
Execution logs & audit
Every script run is recorded with status, duration, error details, and an audit trail.
IncludedIncludedIncludedIncluded
Runtime / hour
How long your scripts may spend running each hour, everything combined. Time spent waiting for Discord to answer counts, so this is also what limits how many messages, bans and role changes your scripts can make: there is no separate cap on those.
30s150s300s600s
Storage (KV + Media)
Persistent storage shared between your scripts' key-value store (settings, moderation history, custom data) and uploaded media files. The one limit here that does not reset every hour, so freeing space means deleting keys or unused media.
0.5 MB1 MB4 MB10 MB
fetch() calls / hour
Outbound HTTP requests your scripts make to other sites and APIs.
103060120
Concurrent scripts
How many of this guild's scripts may run at the same time. A slow script no longer blocks quick ones behind it; incrKV/updateKV lock a key so two of them can't race on the same value when they overlap.
1248
YouTube channels
How many YouTube channels this server may link on the Integrations page to receive video and live stream triggers.
13612
RSS / Atom feeds
How many feeds (blogs, subreddits, GitHub releases, status pages) this server may follow on the Integrations page, and how often they're checked for new items.
3, every 60 min10, every 30 min25, every 15 min50, every 5 min
Incoming webhooks
Scripts with their own URL that GitHub, Ko-fi, Stripe, uptime monitors or your own services can call, and how many requests each accepts an hour.
1 URL, 60 req/h each25 URLs, 300 req/h each25 URLs, 1,000 req/h each25 URLs, 3,000 req/h each
Leaderboard size
How many members one leaderboard set (zIncr/zRange) can rank. Each member also counts towards storage.
10,000 members25,000 members50,000 members100,000 members
Bot profile from scripts
setBotProfile() lets scripts change Mallard's nickname, avatar, banner and bio in this server, e.g. seasonal avatars on a schedule. Every tier can set them by hand on the General page.
Dashboard onlyDashboard onlyIncludedIncluded

A few things worth knowing

  • Tiers are per-guild: a server subscribes independently, and its tier applies to everything running in that server.
  • Budgets are live, not a hard wall: ctx.fetchCallsRemaining is exposed to your scripts so a data-dependent loop can size itself instead of guessing.
  • There are no separate caps on script runs or Discord API actions. Network calls simply run within your hourly script execution time.
  • Upgrading and downgrading both take effect immediately, since there's no manual tier override, so your server's tier always matches its active subscription.

Every tier starts on Free, so you can try it before paying anything.

Read the docs
An unhandled error has occurred. Reload 🗙