Server definition
- Hash
- sha256:1e939883163c492e4d30de148fab991e105a0af6d620465fbb1983b136d154b1
- What it is
- What a remote MCP server returned when asked what it offers: 8 tools
The blob, as servednamed by its sha256
{
"instructions": "Moltline's Outbound Engine: 7 sales-outreach persona/skill products (LinkedIn outreach, follow-ups, multi-channel sequencing, call coaching, deliverability, closing copy, CRM hygiene). Free: list_products, get_free_skill, audit_copy. Premium: get_full_product, get_full_skill.",
"tools": [
{
"description": "Audit outreach copy for spam triggers and deliverability risks. FREE.\n\nChecks spam-trigger phrases, length, structure, caps, links, and\npersonalization signals. Typical input {\"subject\": \"Quick question\",\n\"body\": \"<email text>\"} returns {\"score\": 0-100, \"findings\":\n[\"Spam-trigger phrases: ...\", \"Long for cold outreach (200 words; aim\n50-125)\"], \"note\": \"...\"}.\n\nUse on the body of an outreach message. Not for the subject line alone\n(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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"default": "",
"description": "The email body text to audit.",
"type": "string"
},
"subject": {
"default": "",
"description": "The email subject line; may be empty when auditing body\ncopy alone.",
"type": "string"
}
},
"type": "object"
},
"name": "audit_copy",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Load a product's free gateway skill with its complete instructions. FREE.\n\nTypical input {\"slug\": \"linkedin-outreach\"} returns {\"slug\": ...,\n\"skill\": \"<skill name>\", \"instructions\": \"<full skill text>\"}.\n\nReturns exactly one skill - the product's free gateway skill - chosen\nautomatically from the slug, with no plan required. Use when the caller\nwants usable instructions immediately. Not for the product's other skills:\nthose are named and need get_full_skill with a skill_name, which requires\na 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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"slug": {
"description": "Product slug exactly as returned by list_products,\ne.g. \"linkedin-outreach\".",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_free_skill",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Load one product in full: its persona plus every paid skill. PREMIUM (license).\n\nTypical input {\"slug\": \"linkedin-outreach\"} returns {\"slug\": ...,\n\"name\": ..., \"persona\": \"<persona text>\", \"skills\": [{\"name\": ...,\n\"instructions\": ...}, ...], \"free_skill\": {...}}.\n\nReturns persona plus every skill for one product. Use when the caller\nwants the whole product. Not for a single skill (get_full_skill) and not\nfor a free look, which list_products and get_free_skill provide with no\nplan. 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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"slug": {
"description": "Product slug exactly as returned by list_products,\ne.g. \"linkedin-outreach\".",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_full_product",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Load one paid skill's complete instructions from a product. PREMIUM (license).\n\nTypical input {\"slug\": \"linkedin-outreach\", \"skill_name\": \"Connection\nOpeners\"} returns {\"slug\": ..., \"skill\": ..., \"instructions\": \"<full\nskill text>\"}.\n\nReturns one named skill, selected by skill_name. Use when the caller wants\none specific paid skill. Not for the free gateway skill, which\nget_free_skill returns with no plan, and not for every skill at once\n(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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"skill_name": {
"description": "Exact skill name as listed in that product's \"skills\"\narray from list_products.",
"type": "string"
},
"slug": {
"description": "Product slug exactly as returned by list_products.",
"type": "string"
}
},
"required": [
"slug",
"skill_name"
],
"type": "object"
},
"name": "get_full_skill",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "List the 7 outbound products with their included skills. FREE.\n\nTakes no arguments. Returns a list of product objects, each {\"slug\":\n\"linkedin-outreach\", \"name\": ..., \"tagline\": ..., \"skills\": [\"Skill\nA\", ...], \"free_skill\": \"Gateway Skill Name\"}. Use the returned slug\nvalues with get_free_skill, get_full_product, or get_full_skill.\n\nReturns metadata only - no persona text and no skill instructions. Use\nwhen the caller wants to see what this server covers. Not for keyword\nsearch across the whole 138-product catalog, which the catalog server's\nsearch_catalog does, and not for instructions the caller can act on\n(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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_products",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Plan an outreach cadence with expanding gaps and per-touch purposes. FREE.\n\nSpaces N touches across D days, alternating channels. Typical input\n{\"touches\": 5, \"days\": 14, \"channels\": [\"email\", \"linkedin\"]} returns\n{\"days\": 14, \"plan\": [{\"touch\": 1, \"day\": 0, \"channel\": \"email\",\n\"purpose\": \"open with a specific, researched reason\"}, ...],\n\"rule\": \"...\"}.\n\nUse when cadence and per-touch purpose are the question. Not for the\nwording 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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"channels": {
"default": [
"email",
"linkedin"
],
"description": "Channel names to alternate through in order, e.g.\n[\"email\", \"linkedin\", \"phone\"]. Default [\"email\", \"linkedin\"].",
"items": {
"type": "string"
},
"type": "array"
},
"days": {
"default": 14,
"description": "Total span of the sequence in days; values outside 1-365 are\nclamped. Default 14.",
"type": "integer"
},
"touches": {
"default": 5,
"description": "Number of touches in the sequence; values outside 2-10\nare clamped. Default 5.",
"type": "integer"
}
},
"type": "object"
},
"name": "sequence_planner",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Score and rank up to 20 email subject lines, best first. FREE.\n\nScores 0-100 on length, spam triggers, caps, personalization merge fields,\nand curiosity cues. Typical input {\"subjects\": [\"Quick question about\n{{company}}\", \"ACT NOW!!!\"]} returns {\"ranked\": [{\"subject\": ...,\n\"score\": 92, \"notes\": [\"personalized (+)\", \"question format\"]}, ...]}.\n\nUse when several subject lines need ranking against deliverability and\ncuriosity signals. Not for article headlines, which the creator server's\nheadline_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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"subjects": {
"description": "List of candidate subject lines as plain strings; only\nthe first 20 are scored.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"subjects"
],
"type": "object"
},
"name": "subject_line_scorer",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Build a UTM-tagged URL for campaign tracking. FREE.\n\nTypical input {\"url\": \"https://example.com/pricing\", \"source\":\n\"newsletter\", \"medium\": \"email\", \"campaign\": \"spring-launch\"} returns\n{\"tagged_url\": \"https://example.com/pricing?utm_source=newsletter&\nutm_medium=email&utm_campaign=spring-launch\"}.\n\nUse to build one tagged tracking URL. Not for analyzing campaign results\nand 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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"campaign": {
"description": "utm_campaign value — the campaign name,\ne.g. \"spring-launch\".",
"type": "string"
},
"content": {
"default": "",
"description": "Optional utm_content value for A/B variants.",
"type": "string"
},
"medium": {
"description": "utm_medium value — the channel, e.g. \"email\" or \"cpc\".",
"type": "string"
},
"source": {
"description": "utm_source value — where the traffic comes from,\ne.g. \"newsletter\".",
"type": "string"
},
"term": {
"default": "",
"description": "Optional utm_term value for paid keywords.",
"type": "string"
},
"url": {
"description": "Destination URL; must start with http:// or https://.",
"type": "string"
}
},
"required": [
"url",
"source",
"medium",
"campaign"
],
"type": "object"
},
"name": "utm_builder",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:1e939883163c492e4d30de148fab991e105a0af6d620465fbb1983b136d154b1 | sha256sum