# Moltline Outbound Engine

> 7 outreach, sequencing, call-coaching and CRM-hygiene skill products. 6 of 8 free.

- name: com.moltlinestudio/outbound
- version: 1.2.0
- connection class: R0 (autonomous)
- trust: 84/100 flags: duplicate-repo
- quality: 91/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.moltlinestudio%2Foutbound
- tools: https://api.protogrid.dev/v1/servers/com.moltlinestudio%2Foutbound/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "outbound": {
      "type": "http",
      "url": "https://mcp.moltlinestudio.com/outbound"
    }
  }
}
```


## Trust

- hygiene: 60
- liveness: 99
- freshness: 85
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-97% ~updated-42d-ago -duplicate-repo(22 names)
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 91/100 (strong)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 8 of 8 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,467 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 8, about 2,467 tokens to load them all
- tool set hash: c66d9d5f2532f5bf4474442d60710784
- badge: [![protogrid quality](https://protogrid.dev/badge/com.moltlinestudio/outbound.svg)](https://protogrid.dev/servers/com.moltlinestudio/outbound)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://mcp.moltlinestudio.com/outbound (streamable-http, auth none, reachable true, uptime30d 0.974359)

## Packages

_none_

## Tools (8)

- `audit_copy`: 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.
- `get_free_skill`: 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.
- `get_full_product`: 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.
- `get_full_skill`: 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.
- `list_products`: 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.
- `sequence_planner`: 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.
- `subject_line_scorer`: 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.
- `utm_builder`: 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.
