MailerDot MCP
Provides access to local U.S. city news, weather, events, and census data via a free daily newsletter service. Supports reading city editions, searching archives, checking demographics, and purchasing local business or event listings.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mailerdot.com/mcpWhat its tools do
12 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (8)
Can change data (4)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Retrieve daily local news and weather for a specific U.S. city
- Search archived newsletter editions for local events or topics
- Get demographic facts and census data for a U.S. town
- Purchase event or business listings in a local directory
Source and maintenance
Protocol and capabilities
- Server
- mailerdot 1.0.0
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 12 advertised
- Resources
- 6 advertised
- Resource templates
- 3 advertised
- Prompts
- 3 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
12 advertised
list_cities — List active cities
Returns every U.S. city with an active MailerDot newsletter, grouped by state.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}get_city — Get city overview
Returns city details: subscriber count, recent archive list, and Census Bureau demographics.
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "City slug, e.g. austin-texas"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}get_archive — Read a newsletter edition
Returns the markdown body of a past newsletter edition for a city. Defaults to the most recent edition.
{
"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
}{
"readOnlyHint": true,
"openWorldHint": false
}search_archives — Search newsletter archives
Full-text search across all past newsletter editions. Returns ranked matches with snippets.
{
"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
}{
"readOnlyHint": true,
"openWorldHint": false
}get_weather — Get today's weather
Returns today's weather for a city (snapshot from the newsletter, or live from Open-Meteo).
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}subscribe_city — Subscribe a reader to a city's daily digest
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.
{
"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
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_town_quote — Price a town lease
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.
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Town slug in `{city}-{state-name}` form, e.g. `austin-texas`."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}start_town_checkout — Get a payment link to lease a town
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.
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Town slug in `{city}-{state-name}` form, e.g. `austin-texas`."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_listing_prices — Price an event or business listing
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.
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Town slug in `{city}-{state-name}` form, e.g. `austin-texas`."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}create_event_listing — List an event in a town (returns a payment link)
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.
{
"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
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}create_business_listing — List a business in a town (returns a payment link)
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.
{
"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
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_listing_order — Check a listing order
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.
{
"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
}{
"readOnlyHint": true,
"openWorldHint": false
}Prompts
3 advertised
city_briefing — Brief me on a city's day
Summarise what is happening in a city today from its latest MailerDot edition — headlines, weather, and what is on — in a form someone can read in under a minute.
- city
- A city slug (`austin-texas`) or a plain city name ("Austin, TX"). (required)
compare_cities — Compare two cities
Compare two cities on Census demographics and on what their newsletters actually cover — useful for a relocation question or a market read.
- first
- First city slug or name. (required)
- second
- Second city slug or name. (required)
local_research — Research a topic across a city archive
Search a city's newsletter archive for a topic and assemble what was reported, in order, with dates and links.
- city
- A city slug (`austin-texas`) or a plain city name ("Austin, TX"). (required)
- topic
- What to search for, e.g. "housing", "the new library". (required)
Resources
6 advertised
site-overview — MailerDot site overview (llms.txt)
What MailerDot is, what a daily edition contains, how to subscribe, how city leasing works, and where every other machine-readable resource lives. Start here.
https://mailerdot.com/llms.txtsite-overview-full — MailerDot full documentation (llms-full.txt)
The long form of the overview: product detail, editorial policy, how editions are generated and constrained, operator terms, and API notes.
https://mailerdot.com/llms-full.txtdeveloper-docs — MailerDot developer documentation
The developer portal in full: quickstart, the slug rule, every public endpoint with a worked example, the RFC 9457 error envelope and its complete code table, markdown twins, and MCP setup.
https://mailerdot.com/developersopenapi-spec — MailerDot OpenAPI 3.1 specification
The machine-readable API contract: paths, parameters, response schemas, and the enumerated error codes. Generate a client from this rather than guessing shapes.
https://mailerdot.com/openapi.jsoncity-directory — Cities with a live MailerDot edition
Live directory of every city currently publishing, grouped by state, with a link per city. Read this before guessing a slug.
https://mailerdot.com/cities.mdrecent-editions — The 30 most recent editions across all cities
A reverse-chronological list of the newest editions, each with its city, date, subject line, and URL. The quickest read of what MailerDot published today.
https://mailerdot.com/feed.mdcity-page — A city page as markdown
One city: census snapshot table, subscriber count, and an index of its published editions. `slug` is `{city}-{state-name}`, e.g. `austin-texas`.
https://mailerdot.com/{slug}.mdedition — One daily edition as markdown
The full text of a single published edition — local news, weather, events, and the community spotlight. `date` is YYYY-MM-DD; the city page lists which dates exist.
https://mailerdot.com/{slug}/{date}.mdcity-facts — Schema.org Dataset facts for a city
Structured JSON-LD: newsletter metadata plus U.S. Census ACS demographics — population, median age, income, home value, rent, education, and commute.
https://mailerdot.com/api/facts/{slug}90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-09: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 401 ms
- 95th percentile latency
- 401 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 401 ms · metadata changed · 12 tool(s), 6 resource(s), 3 resource template(s), 3 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http mailerdot-mcp https://mailerdot.com/mcpCodex
codex mcp add mailerdot-mcp --url https://mailerdot.com/mcpCursor
{
"mcpServers": {
"mailerdot-mcp": {
"url": "https://mailerdot.com/mcp"
}
}
}Cline
{
"mcpServers": {
"mailerdot-mcp": {
"type": "streamableHttp",
"url": "https://mailerdot.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"mailerdot-mcp": {
"type": "http",
"url": "https://mailerdot.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http mailerdot-mcp https://mailerdot.com/mcpClaude Desktop
https://mailerdot.com/mcpWindsurf
{
"mcpServers": {
"mailerdot-mcp": {
"serverUrl": "https://mailerdot.com/mcp"
}
}
}Let your agent find its tools
Find servers like MailerDot MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.