# AfterLaunch: the agentic growth marketing engine (remote · afterlaunch.io)

Growth marketing, SEO and GEO as agent tools: ranked moves, ship them, AI answer visibility.

- Trust score: 77/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `afterlaunch.io`: 77/100 (this document), [markdown](https://verifymcp.io/servers/io-afterlaunch-agentic-growth-marketing/api-mcp.md), [page](https://verifymcp.io/servers/io-afterlaunch-agentic-growth-marketing/api-mcp)

## Channel facts

- Endpoint: `https://afterlaunch.io/api/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 97/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3894 tokens (~134/item across 29 items; 29 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 98/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 94% of tool parameters carry a description.
- **Capabilities**: 40/100
  - Spec-recency check failed: implements MCP spec 2025-03-26; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http io-afterlaunch-agentic-growth-marketing https://afterlaunch.io/api/mcp
```

### Codex

```toml
[mcp_servers.io-afterlaunch-agentic-growth-marketing]
url = "https://afterlaunch.io/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-afterlaunch-agentic-growth-marketing": {
      "type": "remote",
      "url": "https://afterlaunch.io/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-afterlaunch-agentic-growth-marketing --url https://afterlaunch.io/api/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-afterlaunch-agentic-growth-marketing:
    url: "https://afterlaunch.io/api/mcp"
```

### Other

```json
{
  "mcpServers": {
    "io-afterlaunch-agentic-growth-marketing": {
      "type": "http",
      "url": "https://afterlaunch.io/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 77, +2)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] Schema quality: good → excellent

### 2026-08-02 (score 75, −1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] Schema quality: excellent → good

### 2026-08-01 (score 76, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “list_feed” rewrote its description, which is the text the model reads
- [security] Tool “whoami” rewrote its description, which is the text the model reads
- [cosmetic] “list_feed” added an optional parameter “since”

### 2026-07-31 (score 76, +8)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 68)

First indexed and scored.

## MCP tools (29)

### `whoami` (~153 tokens)

Confirm the AfterLaunch API key works before doing any growth or marketing work: returns the enrollment (product run) this key is bound to, the key name and its scopes, plus the product identity: product_url (the site this run is about), tier (free, founder, growth or scale) and trial_ends_at. It also returns onboarding { snapshot_status, current_phase, feed_ready }: if you just onboarded a new product, feed_ready is false while the Growth Snapshot deep scan is still building, so wait and re-check before reading the Feed. When credit metering is live it also returns credits { included, topup, total }; the field is absent while metering is off. Call this first.

### `list_feed` (~269 tokens)

The ranked backlog of growth marketing moves AfterLaunch has prepared for this product, across SEO, AI visibility (GEO), competitors and distribution channels: title, why it matters, its area, status, rank and the full draft_content body. Read this before improvising any growth, marketing, SEO or launch work of your own. Returns only live (pending) moves by default; pass include_resolved to also see shipped, skipped, archived and expired moves. total_live counts the live backlog. snapshot_status tells you whether the deep scan is still building or is ready; while building, current_phase names what is running and deep_scan_eta_seconds plus poll_after_seconds tell you when to check back for the full Feed. Pass since (an ISO-8601 timestamp) to fetch only moves first seen after it, the incremental pull for what is new. Read-only.

Input parameters:

- `include_resolved` (boolean): When true, include resolved moves (shipped, skipped, archived, expired) alongside the live ones. Default false: live moves only.
- `since` (string): Optional ISO-8601 timestamp. When set, return only moves first seen after it, the incremental "what is new" pull. Pass the newest first_seen_at you have already read so the same move is never returne…

### `get_loop_status` (~127 tokens)

The automated growth marketing loops PROVISIONED for this product (agent_loops rows), covering AI visibility (GEO), competitor tracking and channel distribution, with their autonomy level, plus runnable_loop_types: the loop types run_loop accepts. The two sets differ: a runnable type only runs once a loop of that type is provisioned and enabled for this product, and a provisioned loop is not necessarily on-demand runnable. Pass loop_type for a single loop, omit it for all.

Input parameters:

- `loop_type` (string): Optional loop type, e.g. daily_brief or linkedin_post.

### `get_enrollment` (~86 tokens)

The product run summary for this AfterLaunch growth engine: product_url (the site this run is about), tier (free, founder, growth or scale), trial_ends_at, timezone, whether autonomous growth work is active, and delivery settings. When credit metering is live it also carries credits { included, topup, total }; the field is absent while metering is off.

### `list_outputs` (~59 tokens)

The drafted marketing and distribution content AfterLaunch has produced for this product (newest first): id, loop_type, kind, status and title. Read-only. Use an id with get_output for the full body, or with approve_output to dispatch it.

### `get_output` (~49 tokens)

One drafted marketing output by id (a channel or distribution draft), with its full content body. Get ids from list_outputs. Read-only.

Input parameters:

- `output_id` (string, required): The output id (uuid).

### `get_setup_snippet` (~112 tokens)

The paste-able 'Growth (AfterLaunch)' markdown section for this repository's CLAUDE.md or AGENTS.md. It teaches any coding agent how to use AfterLaunch for growth, marketing, SEO, AI visibility (GEO), competitor and distribution work: which tools to call, which cost money, and what AfterLaunch never does. Free, read-only, no arguments. Write it into the repo rather than asking the founder to copy it. The same text is public at /agents/snippet.md.

### `get_visibility` (~190 tokens)

The measured AI visibility (GEO) results for this product: share of voice against competitors, per-engine coverage across ChatGPT, Gemini, Perplexity and Google AI Overviews, the tracked buyer questions with per-engine presence, where AI gets its answers (cited sources ranked by breadth, each with its outreach play), competitor-owned gaps, the visibility trend, and AI crawlability. Also carries the off-site reach signals: community mention scans, threads worth answering, and directory listings presence. Read this after refresh_scan (watch discovered_at advance) and before any AI visibility or GEO work. Read-only, free. Pass prompt_id (from the prompts list) to drill into one question with the full engine answer text where your plan includes it.

Input parameters:

- `prompt_id` (string): Optional: drill into one tracked question by its id (from the prompts list) for the full engine answer text and citations.

### `get_seo` (~129 tokens)

The site-wide SEO audit for this product: issue groups with severity and affected pages, the weekly SEO score trend, page performance (Core Web Vitals), links and domain authority with movement, and day-0 search ranks for buyer queries. Read before doing any SEO work of your own; the Feed's seo_fix moves are minted from these findings. Read-only, free. Pass include_pages for the per-page audit detail.

Input parameters:

- `include_pages` (boolean): When true, include the per-page audit detail (path, status, signals, per-page issues). Default false: the grouped issues only.

### `get_competitors` (~87 tokens)

The competitor roster for this product with the measured stat battery for you and each rival: performance, SEO and accessibility scores, Core Web Vitals, domain age and authority, G2 and Product Hunt presence, content freshness. Includes the founder's own edits to the list. Read before any competitor or outreach work so a rival is never treated as a pitch target. Read-only, free.

### `get_outcomes` (~68 tokens)

What the shipped growth moves earned: tracked-link clicks per move, shipped-move counters, the weekly movement scoreboard, and whether GA4 and Search Console are connected. The proof read for growth marketing work: call after ship_move to see whether a move is earning attention. Read-only, free.

### `get_snapshot` (~79 tokens)

The Growth Snapshot diagnostic this product run started from: positioning, the discoverability score, the prioritised leverage actions with impact and effort, the competitor set, and the day-0 SEO and AI visibility baselines. The stable business context read for growth and launch work; for live signal data use get_visibility and get_seo. Read-only, free.

### `get_activity` (~85 tokens)

The product timeline: what the growth agent and the founder already did and why (drafts, ships, skips, scans, observations, decisions with their rationale). Read this before acting so you never redo or contradict recent growth marketing work. Newest first. Read-only, free.

Input parameters:

- `limit` (integer): How many entries to return (1 to 200, default 50).

### `list_kb_pages` (~64 tokens)

The Knowledge Base pages for this product: the shared memory the growth marketing engine drafts from (business basics, audience, competitors, the voice samples, recent observations). Returns summaries with a size hint; fetch one page body with get_kb_page. Read-only, free.

### `get_kb_page` (~89 tokens)

One Knowledge Base page by slug, with its full markdown body: the shared memory the growth marketing engine drafts from. Slugs come from list_kb_pages (about-my-business, my-competitors, about-my-voice, recent-observations, and any pages the founder added). Read-only, free.

Input parameters:

- `slug` (string, required): The page slug, from list_kb_pages.

### `ship_move` (~84 tokens)

Mark a growth move shipped (the same action as the founder's Ship button in the Feed). Free; requires the 'act' scope. Pass asset_url only when the move published a live content asset.

Input parameters:

- `asset_url` (string): Optional confirmed live URL of the shipped marketing asset.
- `move_id` (string, required): The growth move id (uuid), from list_feed.

### `skip_move` (~117 tokens)

Dismiss a growth move (the same action as Skip in the Feed). Free; requires the 'act' scope. Optional feedback_key (closed vocabulary; see the enum) plus a free-text feedback_note explain why, which improves future marketing drafts.

Input parameters:

- `feedback_key` (string): Why the growth move was dismissed. Closed vocabulary; unknown keys are ignored by the learning loop.
- `feedback_note` (string): Optional free-text detail alongside feedback_key.
- `move_id` (string, required): The growth move id (uuid), from list_feed.

### `update_draft` (~72 tokens)

Replace a pending growth move's marketing draft body with an edited version before shipping. Free; requires the 'act' scope.

Input parameters:

- `draft_content` (string, required): The replacement draft body, 1 to 20000 characters.
- `move_id` (string, required): The growth move id (uuid), from list_feed.

### `archive_move` (~68 tokens)

Archive a growth move: a lighter dismissal than skip that removes it from the Feed without recording a skip verdict. Free; requires the 'act' scope. Idempotent on an already-archived move.

Input parameters:

- `move_id` (string, required): The growth move id (uuid), from list_feed.

### `undo_move` (~111 tokens)

Restore a just-shipped or just-skipped growth move to pending (the same action as the founder's Undo in the Feed): the self-correction verb for a wrong ship_move or skip_move. Free; requires the 'act' scope. Idempotent on a move that is already pending. It never unwinds a real channel publish: a posted output stays posted, and an archived or expired move cannot be restored.

Input parameters:

- `move_id` (string, required): The growth move id (uuid), from list_feed.

### `set_output_status` (~155 tokens)

Resolve one drafted marketing output in the founder's review queue (the drafted growth and distribution content from list_outputs / get_output): action 'ship' marks it done (a daily brief) or posted-status (a channel draft) WITHOUT publishing anywhere, action 'skip' dismisses it. This never posts to a channel: real distribution publishing is approve_output (egress scope, human-approved). Free; requires the 'act' scope and Founder tier. Idempotent when the output is already in the requested state.

Input parameters:

- `action` (string, required): 'ship' resolves it as done / posted without publishing; 'skip' dismisses it.
- `output_id` (string, required): The drafted output id (uuid), from list_outputs.

### `redraft_output` (~113 tokens)

Replace a drafted marketing output's body with your edited version before it is shipped (a manual replacement of the growth or distribution draft from get_output). Free; requires the 'act' scope and Founder tier. Manual replacement only: the instruction-driven AI redraft stays in the app for now. The previous draft is kept as revision history.

Input parameters:

- `draft` (string, required): The replacement draft body, 1 to 20000 characters.
- `output_id` (string, required): The drafted output id (uuid), from list_outputs.

### `refresh_scan` (~186 tokens)

SPENDS MONEY: run an on-demand AI visibility scan (scan='ai_visibility'), the GEO measurement of how AI answer engines represent this product against its competitors. Requires the 'write' scope, an account that is on a paid plan or inside an active trial, and an Idempotency-Key you mint. Spend is bounded by the account's credit balance. One scan per scan type per product per local day; any repeat that day replays the original result instead of running again, regardless of the key. Subject to the per-tenant daily and monthly spend caps.

Input parameters:

- `idempotency_key` (string, required): Client-minted key (1-200 chars), required for contract stability. The scan itself is limited to one per scan type per product per local day; repeats replay the original result.
- `scan` (string, required): The scan to refresh. Only 'ai_visibility' today.

### `replenish_feed` (~140 tokens)

SPENDS MONEY: run the growth-move generator on demand to top up the Feed with fresh marketing moves across SEO, AI visibility, competitors and distribution channels (the in-app 'Find more moves'). Requires the 'write' scope, an account that is on a paid plan or inside an active trial, and an Idempotency-Key you mint. Spend is bounded by the account's credit balance. Limited to once a day per product and subject to the per-tenant daily and monthly spend caps.

Input parameters:

- `idempotency_key` (string, required): Client-minted key (1-200 chars). Reusing it replays the original result instead of running again.

### `run_loop` (~268 tokens)

SPENDS MONEY: trigger one on-demand generation run of a growth marketing loop (e.g. linkedin_post for channel distribution, geo_improvement for AI visibility and GEO, competitor_intel for competitor tracking). Costs 1 credit. Requires the 'write' scope and an idempotency_key you mint. Charged and limited to ONE run per loop per product per cycle: a repeat run in the same cycle replays the original result at no cost instead of running (or charging) again, regardless of the key. Subject to the per-tenant daily and monthly spend caps. Accepts only runnable loop types (see runnable_loop_types on get_loop_status), and the loop must also be PROVISIONED and enabled for this product (an agent_loops row, listed by get_loop_status); a runnable type that is not provisioned cannot run.

Input parameters:

- `idempotency_key` (string, required): Client-minted key (1-200 chars), required for contract stability. The run is charged and limited to one per loop per product per cycle; a repeat run in the same cycle replays the original result at n…
- `loop_type` (string, required): The growth loop to run, e.g. linkedin_post (distribution), geo_improvement (AI visibility), competitor_intel (competitors).

### `set_loop_autonomy` (~89 tokens)

Set how much a growth marketing loop does on its own: review, one_click or autonomous. Requires the 'config' scope and Founder tier. Social and distribution channels never accept 'autonomous' (they are review-and-post by a human).

Input parameters:

- `level` (string, required)
- `loop_type` (string, required): The growth loop to configure, e.g. linkedin_post or geo_improvement.

### `set_loop_cadence` (~109 tokens)

Set how often a growth marketing loop runs for this product: 'default' (its normal cadence), 'biweekly', 'monthly' or 'paused'. Requires the 'config' scope and Founder tier. You can only SLOW or pause a loop, never make it run faster than default. Setting 'default' clears any override.

Input parameters:

- `cadence` (string, required)
- `loop_type` (string, required): The growth loop to reschedule, e.g. linkedin_post or geo_improvement.

### `create_checkout` (~105 tokens)

Create a Founder-tier checkout link for THIS product run (the enrollment your key is bound to), the way to unlock the Founder-only growth controls and more metered marketing work. Returns a checkout_url the founder opens to pay; once payment succeeds AfterLaunch upgrades this product to Founder automatically. Reachable on a free trial because it is the path TO Founder. Requires the 'act' scope. The checkout is always bound to your own enrollment, so it can never upgrade a different account.

### `create_topup` (~161 tokens)

Create a credit top-up checkout link for THIS product run (the enrollment your key is bound to), the way to refill the credits that pay for metered growth marketing work when the balance runs out. Pass pack_id: a small, medium or large refill pack. Returns a checkout_url the founder opens to pay; once payment succeeds AfterLaunch adds the credits to this product automatically. Requires the 'act' scope and the Founder plan (on a free trial, use create_checkout first: it mints the upgrade link). The top-up is always bound to your own enrollment, so it can never credit a different account.

Input parameters:

- `pack_id` (string, required): The refill pack size: small, medium or large. The founder sees the price on the checkout page.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-afterlaunch-agentic-growth-marketing/api-mcp#diagnostics

## Score history

- 2026-08-03: 77
- 2026-08-02: 75
- 2026-08-01: 76
- 2026-07-31: 76
- 2026-07-30: 68

## Links

- Remote endpoint: https://afterlaunch.io/api/mcp
- Authorisation metadata: https://afterlaunch.io/.well-known/oauth-protected-resource/api/mcp
- Repository: https://github.com/afterlaunch/mcp
- Website: https://afterlaunch.io/
- Changelog RSS feed: https://verifymcp.io/servers/io-afterlaunch-agentic-growth-marketing/api-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-afterlaunch-agentic-growth-marketing/api-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/io-afterlaunch-agentic-growth-marketing/api-mcp
