Moltline Outbound Engine
by moltlinestudio.com · remote · no sign-in to list tools · v1.2.0 · published by com.moltlinestudio
7 outreach, sequencing, call-coaching and CRM-hygiene skill products. 6 of 8 free.
8 tools: 4 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things4Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http outbound https://mcp.moltlinestudio.com/outboundFindings
Matches of fixed checks, with the text they matched.
- Warnaudit_copy
The server marks "audit_copy" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "audit_copy" says "copy": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
8 tools
Changes things 4Claude Code: ask
audit_copyAudit outreach copy for spam triggers and deliverability risks.1 finding
Why it is in this group
- The name "audit_copy" says "copy": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "audit_copy" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "audit_copy" says "copy": a word for a change.
Description, as the server wrote it Audit outreach copy for spam triggers and deliverability risks. FREE. Checks spam-trigger phrases, length, structure, caps, links, and personalization signals. Typical input {"subject": "Quick question", "body": "<email text>"} returns {"score": 0-100, "findings": ["Spam-trigger phrases: ...", "Long for cold outreach (200 words; aim 50-125)"], "note": "..."}. Use on the body of an outreach message. Not for the subject line alone (subject_line_scorer) and not for the send schedule (sequence_planner). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Annotations the server declares
- title: Audit Copy
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sequence_plannerPlan an outreach cadence with expanding gaps and per-touch purposes.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Plan an outreach cadence with expanding gaps and per-touch purposes. FREE. Spaces N touches across D days, alternating channels. Typical input {"touches": 5, "days": 14, "channels": ["email", "linkedin"]} returns {"days": 14, "plan": [{"touch": 1, "day": 0, "channel": "email", "purpose": "open with a specific, researched reason"}, ...], "rule": "..."}. Use when cadence and per-touch purpose are the question. Not for the wording of any single message (audit_copy). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Annotations the server declares
- title: Sequence Planner
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
subject_line_scorerScore and rank up to 20 email subject lines, best first.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Score and rank up to 20 email subject lines, best first. FREE. Scores 0-100 on length, spam triggers, caps, personalization merge fields, and curiosity cues. Typical input {"subjects": ["Quick question about {{company}}", "ACT NOW!!!"]} returns {"ranked": [{"subject": ..., "score": 92, "notes": ["personalized (+)", "question format"]}, ...]}. Use when several subject lines need ranking against deliverability and curiosity signals. Not for article headlines, which the creator server's headline_analyzer ranks, and not for message bodies (audit_copy). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Annotations the server declares
- title: Subject Line Scorer
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
utm_builderBuild a UTM-tagged URL for campaign tracking.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Build a UTM-tagged URL for campaign tracking. FREE. Typical input {"url": "https://example.com/pricing", "source": "newsletter", "medium": "email", "campaign": "spring-launch"} returns {"tagged_url": "https://example.com/pricing?utm_source=newsletter& utm_medium=email&utm_campaign=spring-launch"}. Use to build one tagged tracking URL. Not for analyzing campaign results and not for anything that belongs in the message body (audit_copy). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "url must start with http(s)://"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Annotations the server declares
- title: Utm Builder
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 4Claude Code: allow
get_free_skillLoad a product's free gateway skill with its complete instructions.No findings
Why it is in this group
- The name "get_free_skill" says "get": a word for reading.
Description, as the server wrote it Load a product's free gateway skill with its complete instructions. FREE. Typical input {"slug": "linkedin-outreach"} returns {"slug": ..., "skill": "<skill name>", "instructions": "<full skill text>"}. Returns exactly one skill - the product's free gateway skill - chosen automatically from the slug, with no plan required. Use when the caller wants usable instructions immediately. Not for the product's other skills: those are named and need get_full_skill with a skill_name, which requires a paid plan. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "unknown slug '<value>'. Use list_products."}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Annotations the server declares
- title: Get Free Skill
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_full_productLoad one product in full: its persona plus every paid skill.No findings
Why it is in this group
- The name "get_full_product" says "get": a word for reading.
Description, as the server wrote it Load one product in full: its persona plus every paid skill. PREMIUM (license). Typical input {"slug": "linkedin-outreach"} returns {"slug": ..., "name": ..., "persona": "<persona text>", "skills": [{"name": ..., "instructions": ...}, ...], "free_skill": {...}}. Returns persona plus every skill for one product. Use when the caller wants the whole product. Not for a single skill (get_full_skill) and not for a free look, which list_products and get_free_skill provide with no plan. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "unknown slug '<value>'"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Annotations the server declares
- title: Get Full Product
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_full_skillLoad one paid skill's complete instructions from a product.No findings
Why it is in this group
- The name "get_full_skill" says "get": a word for reading.
Description, as the server wrote it Load one paid skill's complete instructions from a product. PREMIUM (license). Typical input {"slug": "linkedin-outreach", "skill_name": "Connection Openers"} returns {"slug": ..., "skill": ..., "instructions": "<full skill text>"}. Returns one named skill, selected by skill_name. Use when the caller wants one specific paid skill. Not for the free gateway skill, which get_free_skill returns with no plan, and not for every skill at once (get_full_product). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "unknown slug '<value>'"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Annotations the server declares
- title: Get Full Skill
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_productsList the 7 outbound products with their included skills.No findings
Why it is in this group
- The name "list_products" says "list": a word for reading.
Description, as the server wrote it List the 7 outbound products with their included skills. FREE. Takes no arguments. Returns a list of product objects, each {"slug": "linkedin-outreach", "name": ..., "tagline": ..., "skills": ["Skill A", ...], "free_skill": "Gateway Skill Name"}. Use the returned slug values with get_free_skill, get_full_product, or get_full_skill. Returns metadata only - no persona text and no skill instructions. Use when the caller wants to see what this server covers. Not for keyword search across the whole 138-product catalog, which the catalog server's search_catalog does, and not for instructions the caller can act on (get_free_skill). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Annotations the server declares
- title: List Products
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.2.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http outbound https://mcp.moltlinestudio.com/outboundRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__outbound__list_products",
"mcp__outbound__get_free_skill",
"mcp__outbound__get_full_product",
"mcp__outbound__get_full_skill"
],
"ask": [
"mcp__outbound__audit_copy",
"mcp__outbound__sequence_planner",
"mcp__outbound__subject_line_scorer",
"mcp__outbound__utm_builder"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as outbound. Review it before you use it.