Your city's free daily newsletter: local news, weather and events in a five-minute morning read.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Submits a business to a town's directory, on the same rails as create_event_listing: screened inside the call, approved paid submissions come back with a hosted payment URL. CHARGES NOTHING — a person must open the URL and enter card details. A paid listing runs for 30 days starting the day payment clears; a free (`standard`) one publishes only if a person approves it. Call get_listing_prices first.
The business's website or page. Required.
The business's name.
Town slug in `{city}-{state-name}` form, e.g. `austin-texas`.
standard = free review queue; listing and featured are paid and return a payment link.
Where the receipt and the payment link go. Must be a real address, not a disposable one. An accepted submission also subscribes this address to the town's daily email (one-click unsubscribe in every issue) — tell the person.
What the business does.
One of the directory's categories, e.g. "Food & Drink", "Home & Trades".
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http mailerdot https://mailerdot.com/mcp
Submits a business to a town's directory, on the same rails as create_event_listing: screened inside the call, approved paid submissions come back with a hosted payment URL. CHARGES NOTHING — a person must open the URL and enter card details. A paid listing runs for 30 days starting the day payment clears; a free (`standard`) one publishes only if a person approves it. Call get_listing_prices first.
| Argument | Type | Description |
|---|---|---|
| url* | string | The business's website or page. Required. |
| name* | string | The business's name. |
| slug* | string | Town slug in `{city}-{state-name}` form, e.g. `austin-texas`. |
| tier* | string | standard = free review queue; listing and featured are paid and return a payment link. |
| phone | string | |
| address | string | |
| category | string | One of the directory's categories, e.g. "Food & Drink", "Home & Trades". |
| buyerName | string | |
| buyerEmail* | string | Where the receipt and the payment link go. Must be a real address, not a disposable one. An accepted submission also subscribes this address to the town's daily email (one-click unsubscribe in every issue) — tell the person. |
| description* | string | What the business does. |
{
"type": "object",
"required": [
"slug",
"tier",
"name",
"description",
"url",
"buyerEmail"
],
"properties": {
"url": {
"type": "string",
"description": "The business's website or page. Required."
},
"name": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "The business's name."
},
"slug": {
"type": "string",
"description": "Town slug in `{city}-{state-name}` form, e.g. `austin-texas`."
},
"tier": {
"enum": [
"standard",
"listing",
"featured"
],
"type": "string",
"description": "standard = free review queue; listing and featured are paid and return a payment link."
},
"phone": {
"type": "string",
"maxLength": 30
},
"address": {
"type": "string",
"maxLength": 200
},
"category": {
"type": "string",
"description": "One of the directory's categories, e.g. \"Food & Drink\", \"Home & Trades\"."
},
"buyerName": {
"type": "string",
"maxLength": 80
},
"buyerEmail": {
"type": "string",
"format": "email",
"description": "Where the receipt and the payment link go. Must be a real address, not a disposable one. An accepted submission also subscribes this address to the town's daily email (one-click unsubscribe in every issue) — tell the person."
},
"description": {
"type": "string",
"maxLength": 400,
"minLength": 10,
"description": "What the business does."
}
},
"additionalProperties": false
}Submits an event to a town's calendar. The compliance screen runs inside this call: an approved paid submission comes back with a hosted payment URL, a rejected one comes back with a reason and no charge was ever possible. CHARGES NOTHING — a person must open the URL and enter card details. Nothing published here publishes itself: a paid listing goes live only after payment is confirmed, a free (`standard`) one only after a person approves it. Call get_listing_prices first.
| Argument | Type | Description |
|---|---|---|
| url* | string | Link to tickets, RSVP, or details. Required. |
| slug* | string | Town slug in `{city}-{state-name}` form, e.g. `austin-texas`. |
| tier* | string | standard = free review queue; listing and featured are paid and return a payment link. |
| title* | string | The event's name. |
| venue | string | |
| endsAt | string | Last day, for a multi-day event. |
| address | string | |
| category | string | One of the town calendar's categories, e.g. "Music", "Markets", "Family". |
Returns the markdown body of a past newsletter edition for a city. Defaults to the most recent edition.
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD; omit for latest |
| slug* | string | City slug, e.g. austin-texas |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD; omit for latest"
},
"slug": {
"type": "string",
"description": "City slug, e.g. austin-texas"
}
},
"additionalProperties": false
}Returns city details: subscriber count, recent archive list, and Census Bureau demographics.
| Argument | Type | Description |
|---|---|---|
| slug* | string | City slug, e.g. austin-texas |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "City slug, e.g. austin-texas"
}
},
"additionalProperties": false
}Whether a listing order has been paid and whether the listing is live yet. Possession of the order id is the credential, so the answer carries order state and public listing fields only — never the buyer's name or address. Read-only.
| Argument | Type | Description |
|---|---|---|
| id* | string | The order id from a create_*_listing call. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^lo_[0-9a-f-]{36}$",
"description": "The order id from a create_*_listing call."
}
},
"additionalProperties": false
}What it costs to list an event or a business in one town, and whether that town is currently selling. Call this before create_event_listing or create_business_listing. Read-only.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Town slug in `{city}-{state-name}` form, e.g. `austin-texas`. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Town slug in `{city}-{state-name}` form, e.g. `austin-texas`."
}
},
"additionalProperties": false
}Check whether a U.S. town can be leased as a MailerDot operator, and what it costs per month. Pricing is by subscriber count: $10/month covers the first 1,000 subscribers, then +$5 per additional 1,000. Read-only — this reserves nothing.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Town slug in `{city}-{state-name}` form, e.g. `austin-texas`. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Town slug in `{city}-{state-name}` form, e.g. `austin-texas`."
}
},
"additionalProperties": false
}Returns today's weather for a city (snapshot from the newsletter, or live from Open-Meteo).
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
}
},
"additionalProperties": false
}Returns every U.S. city with an active MailerDot newsletter, grouped by state.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Full-text search across all past newsletter editions. Returns ranked matches with snippets.
| Argument | Type | Description |
|---|---|---|
| slug | string | |
| limit | integer | |
| query* | string |
{
"type": "object",
"required": [
"query"
],
"properties": {
"slug": {
"type": "string"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 2
}
},
"additionalProperties": false
}Starts an operator checkout for a town and returns a hosted payment URL. CHARGES NOTHING: a person must open the URL and enter card details before anything is bought, and the email they enter there becomes the operator account. The town is held for a short reservation window and released if the checkout is not completed. Call get_town_quote first to confirm availability and price.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Town slug in `{city}-{state-name}` form, e.g. `austin-texas`. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Town slug in `{city}-{state-name}` form, e.g. `austin-texas`."
}
},
"additionalProperties": false
}Subscribes an email address to one city's free daily digest. A welcome email goes out at once and the first edition is generated and sent within minutes; every edition carries a one-click unsubscribe. Free, no account. This sends mail to the address given — only call it for an address whose owner asked to subscribe, and confirm with them first. An address can hold up to 10 city digests; subscribing to a second city adds it, never replaces the first.
| Argument | Type | Description |
|---|---|---|
| slug* | string | City slug, e.g. austin-texas |
| email* | string | The reader's email address. Only subscribe an address whose owner asked for this — the tool sends mail to it. |
{
"type": "object",
"required": [
"email",
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "City slug, e.g. austin-texas"
},
"email": {
"type": "string",
"format": "email",
"description": "The reader's email address. Only subscribe an address whose owner asked for this — the tool sends mail to it."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.
| startsAt* | string | Event date, YYYY-MM-DD. Must be today or later. |
| buyerName | string |
| startTime | string | Local start time as HH:MM, 24-hour. Omit for an all-day event. |
| buyerEmail* | string | Where the receipt and the payment link go. Must be a real address, not a disposable one. An accepted submission also subscribes this address to the town's daily email (one-click unsubscribe in every issue) — tell the person. |
| description* | string | What it is, in a sentence or two. |
{
"type": "object",
"required": [
"slug",
"tier",
"title",
"description",
"url",
"startsAt",
"buyerEmail"
],
"properties": {
"url": {
"type": "string",
"description": "Link to tickets, RSVP, or details. Required."
},
"slug": {
"type": "string",
"description": "Town slug in `{city}-{state-name}` form, e.g. `austin-texas`."
},
"tier": {
"enum": [
"standard",
"listing",
"featured"
],
"type": "string",
"description": "standard = free review queue; listing and featured are paid and return a payment link."
},
"title": {
"type": "string",
"maxLength": 120,
"minLength": 3,
"description": "The event's name."
},
"venue": {
"type": "string",
"maxLength": 120
},
"endsAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last day, for a multi-day event."
},
"address": {
"type": "string",
"maxLength": 200
},
"category": {
"type": "string",
"description": "One of the town calendar's categories, e.g. \"Music\", \"Markets\", \"Family\"."
},
"startsAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Event date, YYYY-MM-DD. Must be today or later."
},
"buyerName": {
"type": "string",
"maxLength": 80
},
"startTime": {
"type": "string",
"description": "Local start time as HH:MM, 24-hour. Omit for an all-day event."
},
"buyerEmail": {
"type": "string",
"format": "email",
"description": "Where the receipt and the payment link go. Must be a real address, not a disposable one. An accepted submission also subscribes this address to the town's daily email (one-click unsubscribe in every issue) — tell the person."
},
"description": {
"type": "string",
"maxLength": 600,
"minLength": 10,
"description": "What it is, in a sentence or two."
}
},
"additionalProperties": false
}