Skip to main content
Glama

fetch_drips

Read-onlyIdempotent

List the account drip campaigns — automated email or SMS sequences — with their status, people counters and the plan allowance. Defaults to 25 per page, maximum 100. The counters here count PEOPLE in the sequence (enrolled, active, completed, exited), NOT messages: never report "1,240 sent" from an Enrolled of 1,240. Counters is NOT four numbers: Enrolled, Active and Completed are counts, but Exited is an OBJECT keyed by the same nine reasons as ExitReason in fetch_drip_enrollments (Unsubscribed, Suppressed, NoConsent, Removed, Clicked, Won, Invalid, Undeliverable, OverQuota), and Deferred is an object with Capped and OverQuota. The documented field table calls Exited "by reason" without naming the keys; the nine above are the ones ExitReason enumerates and the shape was confirmed on a live drip 2026-10-13. Add the object up if the user wants one number, and never print it as though it already were one. Message statistics live in fetch_drip_report only. Contact addresses never appear in any drip response. The response carries can_run, which the API documents as whether the PLAN lets drips be activated or resumed — a false there does NOT mean the module is disabled, so never report it as one. Alongside it, plan_limit is passed through in PascalCase and gives MaxAllowed (0 means unlimited), CurrentCount, LimitReached and Unlimited (true when the plan sets no drip limit, that is MaxAllowed 0); LimitReached true means no further drip can be created, which is an app action anyway. can_run is INDEPENDENT of those counters — it was observed false on a live account while CurrentCount was 0 and LimitReached was false, so never explain a false can_run by the allowance. It tells you THAT the plan does not allow it, never WHY: the cause only surfaces when a write is refused, and what a refusal actually carries has now been measured — a pause refused on a draft answered 409 with api_data.Status naming the status, NOT a Reason (verified live 2026-10-13). The documented Reason vocabulary (PlanDoesNotAllowSharing, ChannelNotInPlan, NoRegisteredSmsSender, StaffHold) has still never been seen on a real response, so read the message and never claim a Reason the response did not include. Do not guess between them from can_run alone. Account-gated, and the two sides of this category are gated differently: the reads need only the Drip Marketing module, while pause_drip, resume_drip and remove_drip_contact need Drip Marketing plus Send Message. The gate was NOT observed on the test account, so on a 403 read back which module the API named instead of guessing. Drips are created, edited, activated and deleted ONLY in the Sweeppea app: those actions run a launch checklist (template, sender, 10DLC registration, content screening, plan allowance) that this API deliberately does not reproduce. There is no create endpoint and that is by design, not a gap — the API leaves these writes out on purpose (confirmed by the API maintainer, October 2026) — say so plainly instead of hunting for a workaround, and never propose or invent a tool for it.

Input Schema

NameRequiredDescriptionDefault
pageNoPage number, starting at 1. Defaults to 1
searchNoPart of the drip name (case-insensitive, max 100 characters)
statusNoDrip status to filter by. Note this list differs from the one used by fetch_drip_enrollments
channelNoemail or sms
archivedNotrue lists archived drips instead. Defaults to false
items_per_pageNoResults per page, 1 to 100. Defaults to 25
sweepstakes_tokenNoOnly drips of this sweepstakes (UUID v4)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the safe-read profile; the description adds substantial behavioral context beyond them — how counters must be interpreted (people not messages, Exited/Deferred are objects), what can_run does and does not mean, and how a 409 refusal differs from the documented Reason vocabulary. It also flags account gating and the observed 403 behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, but the body is extremely long and repetitive — the independence of can_run from the allowance counters is asserted more than once, and the Reason vocabulary discussion is labored. Much of the volume is justified by the absent output schema, yet several sentences restate the same warning rather than adding new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description correctly carries the full return-value burden — counter shapes, plan_limit fields, can_run semantics, and absent fields ('Contact addresses never appear in any drip response'). Nothing an agent needs to interpret a response correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all seven parameters are already documented in the schema. The description only restates pagination defaults ('Defaults to 25 per page, maximum 100'), adding no syntax or semantics beyond the schema's own text. Baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with parenthetical definition ('List the account drip campaigns — automated email or SMS sequences') and immediately names the fields it returns (status, people counters, plan allowance). It is clearly distinguishable from siblings by explicitly stating that message statistics live only in fetch_drip_report and enrollment reasons in fetch_drip_enrollments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: message stats belong to fetch_drip_report, exit reasons are enumerated like fetch_drip_enrollments' ExitReason, and create/edit/activate/delete must happen in the Sweeppea app ('There is no create endpoint and that is by design'). It also spells out the different module gates for this read versus pause/resume/remove writes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources