Skip to main content
Glama
camelmailer

CamelMailer MCP Server

Official
by camelmailer

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CAMELMAILER_API_KEYYesServer API key from your CamelMailer dashboard.
CAMELMAILER_BASE_URLNoBase URL of your CamelMailer instance. Defaults to https://app.camelmailer.comhttps://app.camelmailer.com

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
send_emailA

Send a transactional email through CamelMailer. Provide html_body and/or text_body. Queues one message per recipient and returns their ids.

send_email_with_templateA

Render a stored CamelMailer template (Mustache-style {{ variables }}) against template_model and send it. Fields set directly (e.g. subject) override the rendered ones.

list_emailsA

List messages of the CamelMailer server, newest first. Filter by scope, status, tag, substring query or message stream.

get_emailA

Retrieve one message by id, including its SMTP delivery attempts.

list_templatesA

List all stored message templates of the CamelMailer server.

render_templateA

Preview a stored template rendered against a variable model — returns the rendered subject, html_body and text_body without sending anything.

get_statsB

Message counters of the server (sent, pending, bounced, opens, clicks, …), optionally limited to a created_at time window.

list_bouncesC

List bounced messages, filtered and paginated.

dmarc_summaryA

DMARC compliance summary over the stored aggregate reports: pass rate, top sending sources and disposition totals.

list_streamsA

List the message streams of the server. A stream is transactional or broadcast; broadcast streams are the ones campaigns and subscribers belong to.

get_streamA

Retrieve one message stream by permalink.

create_streamA

Create a message stream. Set permalink explicitly when you need to know it up front; the API derives one from the name otherwise.

update_streamB

Update a message stream. Only the given fields change.

archive_streamA

Archive a message stream. Archived streams reject new messages.

send_to_streamA

SENDS MAIL IMMEDIATELY to every subscriber of a broadcast stream. Give either a subject with a body, or a template permalink. Recipients past the per-request cap of 1000 come back as skipped, so a larger audience wants a campaign.

list_campaignsA

List broadcast campaigns, newest first. Pass stream to narrow to one broadcast stream.

get_campaignA

Retrieve one campaign with its statistics: total, sent, delivered, failed, opened, clicked and unsubscribed.

create_campaign_draftA

Write a campaign WITHOUT sending it. Leave scheduled_at unset and the campaign stays a draft; set it and the server sends when due. This is the tool to use when a campaign should be reviewed first — use send_campaign_now only when it should go out immediately.

send_campaign_nowA

CREATES A CAMPAIGN AND SENDS IT IMMEDIATELY to every subscriber of the stream. There is no draft to review and no schedule; the send starts before this returns. Use create_campaign_draft unless the mail really should go out now.

update_campaignA

Edit a draft or scheduled campaign. Set scheduled_at to schedule it, or clear_schedule to drop it back to a draft. Touching neither leaves the schedule standing. A campaign that is already sending cannot be edited.

send_campaignA

SENDS AN EXISTING CAMPAIGN NOW, whatever its schedule said. The send starts immediately and cannot be undone for messages already queued.

cancel_campaignA

Cancel a scheduled or in-flight campaign. Messages already queued are not recalled.

list_subscribersA

List a broadcast stream's subscribers, subscribed and unsubscribed alike. A broadcast send to an address that is not subscribed is refused, so this list is the audience.

add_subscriberA

Add or update one subscriber of a broadcast stream. Upserts by address, so calling it twice is safe.

import_subscribersA

Add many addresses to a broadcast stream at once, all as subscribed. Blanks and duplicates within the request are skipped, so the reported count can be lower than the number of addresses passed.

record_complaintA

Record a spam complaint against an address: writes a stream-scoped suppression and flips the subscription to unsubscribed. Idempotent, so a feedback loop can replay it safely.

remove_subscriberA

Remove a subscriber from a broadcast stream entirely. To stop mailing someone while keeping the record, set their status to unsubscribed with add_subscriber instead.

list_layoutsA

List the template layouts of the server. A layout wraps every template that uses it, so header, footer and styling live in one place.

get_layoutA

Retrieve one layout by permalink, including its wrappers.

create_layoutA

Create a template layout. html_wrapper has to embed the body with {{{ content }}}; anything else is refused with ValidationError.

update_layoutB

Update a layout. Only the given fields change.

delete_layoutA

Delete a layout. Templates that referenced it fall back to no wrapper.

list_inboundA

List inbound and held messages, newest first. Covers mail arriving through an inbound route as well as outbound mail the spam filter put on hold.

get_inboundA

Retrieve one inbound or held message by id.

retry_inboundA

Put an inbound message back on the delivery queue, for instance after fixing the route it should have matched.

bypass_inboundA

RELEASE A HELD MESSAGE past the hold and deliver it. The hold is what the spam filter put there, so check the message before releasing it.

list_api_requestsA

List the server's own logged API requests, newest first. Useful when a send did not arrive and the question is whether the request ever reached the API, and with what answer.

list_tagsA

Tags used by the server's recent messages, most used first — the vocabulary available to the tag filter of list_emails.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.5/5.0

Scored across 38 tools

Disambiguation4/5

Most tools target a distinct resource and action, and descriptions explicitly disambiguate near-overlaps like send_campaign_now vs send_campaign and send_to_stream vs create_campaign_draft. A few pairs, such as get_email vs get_inbound and list_emails vs list_bounces, could still cause misselection if an agent is not careful.

Naming Consistency4/5

The naming is predominantly lowercase snake_case verb_noun, e.g. list_campaigns, create_layout, update_stream, cancel_campaign. Minor deviations like dmarc_summary, send_campaign_now, and send_email_with_template break the exact pattern but remain readable and predictable.

Tool Count2/5

At 38 tools, this is well beyond the typical 3-15 tool sweet spot and above the 25-tool threshold for a heavy surface. Although the tools are organized into logical domains, the sheer number makes navigation and selection harder for an agent.

Completeness3/5

The surface is broad, covering transactional sends, campaigns, streams, subscribers, layouts, inbound handling, and stats, but template management is read-only: list_templates and render_template exist with no create_template/update_template/delete_template. There are also lifecycle gaps like no delete_campaign, delete_stream, or unarchive_stream.

Maintenance

ActivityNo data
ResponsivenessNo issues