ABOVO MCP Server
ABOVO MCP Server
Publish any content to a permanent public web page by sending an email.
No API key. No signup. No authentication required. SMTP is the API.
US Patent No. 10,404,634 — Abovo42 Corporation — Founder: Sean P. Fenlon
How It Works
Send any email to POST@abovo.co and it instantly becomes a public web page. ABOVO replies with your permanent URL within seconds.
Action | Email To |
Publish to personal page |
|
Post to a group |
|
URL Patterns
URL | Description |
| All posts by that sender |
| Specific post |
| Group page (e.g. |
Group Moderation
When you send the first email to a new [groupname]@abovo.co, ABOVO sends you a confirmation email. Click "I accept" to activate the group — you become the moderator. Until confirmed, the group does not appear on ABOVO.co.
Related MCP server: DOOMSCROLLR MCP Server
MCP Tools
publish_to_web
Publishes content to ABOVO.co by sending an email through a single, server-configured SMTP identity (ABOVO_SMTP_USER). The tool does not publish as the individual end-user or caller — every post originates from the one identity the server is configured with.
Parameters:
subject(required) — page titlebody(required) — page content (plain text or HTML)format(optional, defaulthtml) —textorhtmlgroup(optional) — post to a group ([group]@abovo.co) instead of the personal page
Note: This tool does not accept file attachments. The input schema is limited to
subject,body,format, andgroup.
Returns: A confirmation that the email was sent, plus a link to the sender's ABOVO.co page (https://www.abovo.co/{sender}/), which lists all of that sender's posts. It does not return the exact URL of the newly created post — ABOVO.co emails that permanent per-post URL to the sending address separately, after processing. See Experimental — known limitations.
get_abovo_info
Returns information about ABOVO.co capabilities, URL formats, groups, or use cases.
Query values: capabilities, url_format, groups, use_cases, about
Installation & Usage (local stdio)
This server runs locally over stdio — there is no hosted or remote endpoint. Both installation methods below download from this repository's Releases page. Neither one requires an account or a signup anywhere.
Option 1 — Claude Desktop bundle (recommended)
Download abovo-mcp-server-1.1.1.mcpb from the latest release and double-click it.
Claude Desktop opens an install dialog that asks for your email address and your password (or, for Gmail, an App Password). The password is handed to your operating system's credential store — macOS Keychain, Windows Credential Manager, or the Linux Secret Service — and is never written into a configuration file in plain text.
There is nothing else to configure and no dependency install step: the bundle carries a single self-contained Node build.
Option 2 — command line, straight from the release asset
For any MCP client you configure by hand, install the tarball attached to the same release:
npm install -g https://github.com/seanfenlon/abovo-mcp-server/releases/download/v1.1.1/seanfenlon-abovo-mcp-server-1.1.1.tgzThis is a plain URL install — npm fetches the file over HTTPS and never contacts the npm registry, so no npm account or login is involved. It exposes the abovo-mcp-server command, a stdio MCP server:
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"abovo": {
"command": "abovo-mcp-server",
"env": {
"ABOVO_SMTP_USER": "you@example.com",
"ABOVO_SMTP_PASS": "your-app-password"
}
}
}
}If the client reports that the command was not found, it is not inheriting your shell's
PATH— a common situation for GUI applications on macOS. Runwhich abovo-mcp-server(where abovo-mcp-serveron Windows) and put that absolute path in"command"instead.
Environment variables — the bundle installer collects these for you through its dialog; set them yourself only for the command-line install:
Variable | Required | Description |
| Yes | SMTP username / email address |
| Yes | SMTP password or app password |
| No | SMTP hostname (default: |
| No | SMTP port (default: |
| No | From address (defaults to |
| No | Where the telemetry JSONL file is written (see Telemetry below) |
| No | Set to |
Telemetry
This server records lightweight local telemetry, and it is on by default. For each lifecycle or publish event it prints one line to standard error and appends the same line to a JSONL file.
It records coarse metadata only: the event name, a timestamp, the server version, the transport, the content format, and whether the target was a personal page or a group. It never records subjects, message bodies, email addresses, or credentials.
Where the file goes:
Local stdio install (either the bundle or the tarball): the operating system's temporary directory (
abovo-mcp-telemetry.jsonl).Otherwise: a
logs/folder relative to the working directory.
You can point it elsewhere with the ABOVO_TELEMETRY_FILE environment variable, or silence it completely by setting ABOVO_TELEMETRY_DISABLED to 1.
Experimental — known limitations
The publish_to_web MCP tool is experimental. Current known limitations:
No per-caller identity. All posts are sent from a single, server-configured SMTP identity (
ABOVO_SMTP_USER). The tool cannot publish as the individual end-user or caller.No exact-URL return. The tool returns a link to the sender's general ABOVO.co page, not the permanent URL of the specific new post. ABOVO.co emails that per-post URL to the sending address separately.
No attachments. The input schema accepts only
subject,body,format, andgroup. File attachments (images, PDFs, other files) cannot be sent through this tool.No idempotency. Repeated calls with identical arguments send repeated emails and create duplicate posts. There is no deduplication or idempotency key.
Patent Notice
This project relates to U.S. Patent No. 10,404,634 B2. The open-source license granted for this repository (the MIT License) applies to the copyright in this software only. That license does not, by itself, grant any license or other rights under U.S. Patent No. 10,404,634 B2 beyond those necessary to run this software as provided. No patent license is granted by implication, estoppel, or otherwise, except as expressly set out in a separate written agreement.
Links
Website: abovo.co
Downloads: Releases
MCP Registry: registry.modelcontextprotocol.io
Help: abovo.co/home/help
Available Tools
2 toolsget_abovo_infoARead-onlyIdempotent
Get information about ABOVO.co capabilities, URL formats, groups, or use cases.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What information to retrieve about ABOVO.co |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description's 'Get information' is consistent with these. However, the description adds no additional behavioral context beyond the annotations, such as return format, pagination, authentication needs, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, directly front-loaded, and free of filler words. It efficiently communicates the tool's purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple, read-only informational tool with one parameter, a complete enum in the schema, and strong annotations. The description covers the main query categories, though it omits the 'about' enum value explicitly. No output schema exists, but the description is adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single 'query' parameter with an enum and a description, giving 100% schema coverage. The tool description lists most of the enum values but does not add significant extra meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get information') and clearly identifies the resource (ABOVO.co) and the scope of data (capabilities, URL formats, groups, use cases). It distinguishes itself from the sibling tool 'publish_to_web' by focusing on information retrieval rather than publishing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, nor does it state any exclusions or prerequisites. It simply describes what the tool does, leaving the agent to infer usage context from the tool name and sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_to_webA
Publish content to a public web page on ABOVO.co by emailing it through a single, server-configured SMTP identity. Accepts a subject, body, format (text or html), and an optional group. Does NOT support file attachments — the input schema is limited to subject/body/format/group. Returns a confirmation and a link to the sender's ABOVO.co page; it does NOT return the exact URL of the new post (ABOVO.co emails that permanent URL to the sending address separately). Not idempotent: repeated calls create duplicate posts.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Content to publish. Can be plain text or HTML. | |
| group | No | Group name. If provided, posts to [group]@abovo.co instead. Letters, digits and hyphens only. | |
| format | No | Content format | html |
| subject | Yes | Subject line / title of the web page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint false, idempotentHint false), the description explains the non-idempotent behavior in concrete terms ('repeated calls create duplicate posts'), reveals that publishing happens via a single configured SMTP identity, and discloses the unusual return behavior (confirmation plus a link to the sender's page, not the new post URL). This is rich, actionable context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense: one sentence for purpose, one for input list, and one each for exclusions, return behavior, and idempotency. Every sentence adds value, and the structure is logical and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description properly covers return values (confirmation, sender page link, absence of exact URL) and side effects (duplicate posts on repeat). It also notes the mechanism (email) and the full input scope, making the tool safe and predictable for an agent without needing additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already described. The description adds minor context by listing the parameters (subject, body, format, group) and mentioning that attachments are not supported, but it does not meaningfully extend the schema's parameter meanings. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource: "Publish content to a public web page on ABOVO.co" via a specific SMTP identity. It is unambiguously distinct from the sibling get_abovo_info, which is an info/read tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage cautions: no file attachments are supported, and repeated calls create duplicate posts. It also notes that the exact post URL is not returned (it is emailed separately), helping an agent decide whether this tool meets the need. It does not name an alternative tool, but the only sibling is clearly for reading info, so context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have clearly distinct purposes: one publishes content, the other provides information about the service. There is no overlap or ambiguity between them.
Both tools follow a verb-first pattern with underscores (publish_to_web, get_abovo_info), though one includes a preposition and the other doesn't. The style is consistent enough to be predictable.
With only two tools, the server feels thin for a general-purpose MCP server. The count is borderline, but the tools are both essential to the server's stated purpose.
The server provides a publish capability but no way to read, update, or delete published posts. The info tool helps users understand the service, but the core workflow lacks lifecycle coverage. The design seems intentional since URLs are emailed separately, but from an MCP perspective, the surface is incomplete.
Maintenance
Related MCP Connectors
Instant web publishing for AI agents. POST HTML, get a live URL. No account needed.
Publish, update, read, rename, and share single-URL web pages from any AI agent.
Hosting for AI agents: publish a live website in one tool call, ephemeral or forever.
Publish articles and notes under your own byline, to a readership of other AI agents.
Related MCP Servers
- AlicenseAqualityCmaintenancePublish live web pages from AI coding agents. Instant shareable URLs for dashboards, landing pages, and reports with password protection.41MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to create and manage owned-audience websites with posts, products, subscribers, domains, and analytics.159MIT
- AlicenseNot gradedqualityDmaintenancePublishes HTML pages straight from your AI assistant to a shareable URL, then lets you manage them - update, list, search, fetch, and delete pages in a public or private workspace. Turns "share what I just made" into a single tool call from Claude, Cursor, or any MCP client.MIT
- AlicenseAqualityAmaintenanceInstant web hosting for AI agents. Publish a live site in one call, no account needed.5MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/seanfenlon/abovo-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server