AfterLaunch: the agentic growth marketing engine
by afterlaunch.io · remote · no sign-in to list tools · v1.0.0 · published by io.afterlaunch
Growth marketing, SEO and GEO as agent tools: ranked moves, ship them, AI answer visibility.
58 tools: 31 can delete or cancel things, 1 change things and 26 only read.
Scanned Oct 21, 2026
- Deletes or cancels31Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things1Claude Code: ask: see these tools
- Only reads26Claude 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 agentic-growth-marketing https://afterlaunch.io/api/mcp --header 'Authorization: <your-authorization>'Findings
Matches of fixed checks, with the text they matched.
The description mentions "credential".
What this check looks forMatched text
description: "...or distribution channel and delete the credential stored for it (for Google it is also re..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
58 tools
Deletes or cancels 31Claude Code: deny
accept_moveAccept a move only after the founder says yes.No findings
Why it is in this group
- The name "accept_move" says "move": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Accept a move only after the founder says yes. This records one durable preparation attempt and may start the configured worker only when launch_won is true. A repeat never starts another worker. Free; requires the 'act' scope.
Annotations the server declares
- title: Accept a growth move
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: true
add_competitorAdd one company the person confirmed they compete with to their rival roster, which the next AI visibility scan measures them against and every competitor read carries.No findings
Why it is in this group
- The name "add_competitor" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Add one company the person confirmed they compete with to their rival roster, which the next AI visibility scan measures them against and every competitor read carries. WHEN: only after they say yes to that rival. A rival already on the roster, by domain or by name, is left as it is. At most 10 rivals. Free; requires the 'act' scope. WHAT COMES BACK: the roster, the new rival marked.
Annotations the server declares
- title: Add a competitor
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
adopt_move_resultApply your user's explicit decision to adopt work prepared before attempt tracking (a null attempt) as an accepted growth move's prepared result, ready for their review.No findings
Why it is in this group
- The name "adopt_move_result" says "move": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Apply your user's explicit decision to adopt work prepared before attempt tracking (a null attempt) as an accepted growth move's prepared result, ready for their review. Pass the inspected prepared_content or asset_url and the exact move and legacy job states and updated_at. This never publishes anything. Free; requires the 'act' scope.
Annotations the server declares
- title: Adopt a legacy result
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
archive_moveArchive a growth move: a lighter dismissal than skip, with no verdict recorded.No findings
Why it is in this group
- The name "archive_move" says "archive": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Archive a growth move: a lighter dismissal than skip, with no verdict recorded. Free; requires the 'act' scope. Idempotent on an already-archived move.
Annotations the server declares
- title: Archive a growth move
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
correct_move_publicationApply your user's explicit decision that a growth move's recorded publication is wrong: the shipped move is archived, its completion history is kept and no paid follow-through rest…No findings
Why it is in this group
- The name "correct_move_publication" says "move": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Apply your user's explicit decision that a growth move's recorded publication is wrong: the shipped move is archived, its completion history is kept and no paid follow-through restarts. Pass the exact current job and attempt; legacy work also needs the exact move and legacy job states and updated_at. This never publishes anything. Free; requires the 'act' scope.
Annotations the server declares
- title: Correct a recorded publication
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
create_checkoutOnly mints a link: returns a hosted checkout_url for the Founder plan, takes no card or payment details and charges nothing itself.No findings
Why it is in this group
- The name "create_checkout" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Only mints a link: returns a hosted checkout_url for the Founder plan, takes no card or payment details and charges nothing itself. Payment happens solely on that hosted checkout page, which your user opens in their own browser; once they pay, the Founder-only growth controls and more metered marketing work unlock. Reachable on a free trial. Requires the 'act' scope, and it is always bound to your own enrollment.
Annotations the server declares
- title: Create checkout link (no payment taken)
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: true
create_topupOnly mints a link: returns a hosted checkout_url for a credit top-up (pack_id small, medium or large), takes no card or payment details and charges nothing itself.No findings
Why it is in this group
- The name "create_topup" says "create": a word for a change.
- The name "create_topup" also says "topup": a word that usually means money moves, which cannot be taken back.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Only mints a link: returns a hosted checkout_url for a credit top-up (pack_id small, medium or large), takes no card or payment details and charges nothing itself. Payment happens solely on that hosted checkout page, which your user opens in their own browser; the credits for metered growth marketing work land once they pay. Requires the 'act' scope and the Founder plan (not a free trial). Always bound to your own enrollment.
Annotations the server declares
- title: Create top-up link (no payment taken)
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: true
disconnect_connectionDisconnect a growth data source or distribution channel and delete the credential stored for it (for Google it is also revoked at Google).1 finding
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 destructive (destructiveHint: true).
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...or distribution channel and delete the credential stored for it (for Google it is also re..."
Description, as the server wrote it Disconnect a growth data source or distribution channel and delete the credential stored for it (for Google it is also revoked at Google). Idempotent: disconnecting something that was never connected changes nothing. It narrows what the growth engine can measure and where it can distribute, so confirm with the founder first. Free.
Annotations the server declares
- title: Disconnect an account
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: true
dismiss_gapSet aside one AI visibility (GEO) gap the founder is not going to act on: a tracked question where rivals get named and this product does not.No findings
Why it is in this group
- The name "dismiss_gap" says "dismiss": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Set aside one AI visibility (GEO) gap the founder is not going to act on: a tracked question where rivals get named and this product does not. The same verdict as a skip, on the AI visibility surface, and it resolves the gap in ONE place: it stops being re-proposed here AND on the growth Feed, and the reason improves what gets ranked next. Free; requires the 'act' scope, and available on every plan because telling the agent "not this one" is never a paid feature. Idempotent: a gap already shipped or archived is left as it is.
Annotations the server declares
- title: Dismiss visibility gap
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
pick_up_jobTry to claim one queued preparation attempt.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 destructive (destructiveHint: true).
Description, as the server wrote it Try to claim one queued preparation attempt. Pass job_id and the exact nullable attempt_id of a queued job. Start work only when the response says claim_won:true. An unchanged result is a non-winner and must not start work. Free; requires the 'act' scope.
Annotations the server declares
- title: Pick up a job
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
propose_moveAdd a pending move to your user's growth moves.No findings
Why it is in this group
- The name "propose_move" says "move": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Add a pending move to your user's growth moves. WHEN: you found a thread on a community they work, or their plan calls for a placement ask, outreach, a directory listing or a page for their site, and no move covers it yet. A repeat (same kind and target, or kind and title) hands back the existing move id. It comes back with its posture: a Reddit or Hacker News target is draft_only, meaning you draft and your user posts, and you never post there yourself without their yes in your thread. Outreach goes from their address, never without their yes. Free; 'act' scope; a fixed number a day. WHAT COMES BACK: the move id and posture.
Annotations the server declares
- title: Propose a growth move
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
record_claimPut one measured number the founder will stand behind in public into the claim library, so every later reply and growth marketing post can cite it with its caveat.No findings
Why it is in this group
- The description's first verb is "put": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Put one measured number the founder will stand behind in public into the claim library, so every later reply and growth marketing post can cite it with its caveat. WHEN: a real measurement lands and the founder says they would defend it. Record the NUMBER and the caveat together; a number without its caveat is what this library exists to prevent. Never record an estimate, a projection, a rival's figure, or anything you inferred rather than measured. Free; requires the 'act' scope. Recording the same claim twice replaces your earlier wording; a pinned claim is left as it is. WHAT COMES BACK: their top moves with move ids.
Annotations the server declares
- title: Record a claim
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
record_contentFile a growth idea (optional channels, kind, score, final_text sent verbatim, desk: a post, reply or task the owner posts by hand, queued at slot_at, or a decision or read that nee…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 destructive (destructiveHint: true).
Description, as the server wrote it File a growth idea (optional channels, kind, score, final_text sent verbatim, desk: a post, reply or task the owner posts by hand, queued at slot_at, or a decision or read that needs the owner, due_on a date), original X draft or research outcome. Research appends a result to its idea; send expected_updated_at unchanged from the calendar. It keeps evidence holds and never authorises drafting. Requires 'act' scope; no spend or posting. Keep run_key stable. Drafts need action_kind social_post and one idea_id or source_idea; source_url is evidence. adopt_legacy only reclassifies an exact saved replay (a reply keeps its X destination).
Annotations the server declares
- title: Record content
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
record_insightWrite one durable thing you have learned about this founder or their product into AfterLaunch's Memory, the record every growth and marketing draft is written from.No findings
Why it is in this group
- The description's first verb is "write": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Write one durable thing you have learned about this founder or their product into AfterLaunch's Memory, the record every growth and marketing draft is written from. WHEN: the moment the founder tells you something that will still be true next month and that AfterLaunch could not have measured itself. A standing preference, a rule about how they write, a fact not on the site yet, or what a shipped move actually earned. Recording it is part of the job, not a favour: AfterLaunch drafts from Memory, so anything you keep to yourself is a correction the next draft will need again. Record what LASTS. Never record chatter, a passing mood, a restatement of the Snapshot or Memory, or anything you inferred rather than heard. One sentence in the founder's own terms, 10 to 500 characters. Free; requires the 'act' scope. Recording the same insight twice replaces your earlier note; a pinned note is left as it is. WHAT COMES BACK: their top moves with move ids, so recording hands you your next instruction without a second call.
Annotations the server declares
- title: Record an insight
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
record_profileFile one public profile or listing the person already has on a directory site, so AfterLaunch counts it as a verified presence and a weekly check confirms it is still live.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 destructive (destructiveHint: true).
Description, as the server wrote it File one public profile or listing the person already has on a directory site, so AfterLaunch counts it as a verified presence and a weekly check confirms it is still live. WHEN: you opened the page and it is theirs. One address per site; a new address replaces the old one, the same address again changes nothing. The address must sit on that site's own host. Free; requires the 'act' scope. WHAT COMES BACK: every profile on record, the new one marked.
Annotations the server declares
- title: Record a profile
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: true
record_voice_ruleSave one writing rule the person approved into their OWN voice, never the brand's.No findings
Why it is in this group
- The description's first verb is "save": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Save one writing rule the person approved into their OWN voice, never the brand's. The morning marketing posts drafted for them follow it, move and voice reads carry it, and they see and remove it in Memory. WHEN: only after they approve it in words, e.g. a yes to a rule you proposed from how they edited a draft before posting. Never record one they did not approve. One sentence. At most 12. Free; requires the 'act' scope.
Annotations the server declares
- title: Record a voice rule
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
redraft_outputReplace a drafted marketing output's body before it is shipped.No findings
Why it is in this group
- The description's first verb is "replace": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Replace a drafted marketing output's body before it is shipped. Manual replacement only: the AI redraft stays in the app. A draft carrying an unfilled placeholder or a broken link is refused, and the previous draft is kept as revision history. Free; requires the 'act' scope and Founder tier.
Annotations the server declares
- title: Update output draft
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
refresh_scanSPENDS MONEY: run an on-demand AI visibility scan (scan='ai_visibility'), the GEO measurement of how the answer engines represent this product against its competitors.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 destructive (destructiveHint: true).
Description, as the server wrote it SPENDS MONEY: run an on-demand AI visibility scan (scan='ai_visibility'), the GEO measurement of how the answer engines represent this product against its competitors. Needs the 'write' scope, a paid plan or an active trial, and an Idempotency-Key you mint. Bounded by the credit balance and the per-tenant daily and monthly caps. One scan per type per product per local day; a repeat that day replays the original result, regardless of the key.
Annotations the server declares
- title: Run AI visibility scan
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: true
replenish_feedSPENDS MONEY: run the growth-move generator on demand to top up the Feed with fresh marketing moves across SEO, AI visibility, competitors and distribution.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 destructive (destructiveHint: true).
Description, as the server wrote it 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. Needs the 'write' scope, a paid plan or an active trial, and an Idempotency-Key you mint. Bounded by the credit balance and the per-tenant daily and monthly caps. Once a day per product.
Annotations the server declares
- title: Find more growth moves
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: true
report_jobReport a claimed attempt with its exact attempt_id: running; needs_input with one question for your user; shipped with the live published_url, or planned_url once merged (we check …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 destructive (destructiveHint: true).
Description, as the server wrote it Report a claimed attempt with its exact attempt_id: running; needs_input with one question for your user; shipped with the live published_url, or planned_url once merged (we check it); ready_for_review with prepared_content, or asset_url when your user must post it or when it is the pull request you opened; failed with fail_reason. Ready_for_review can be reported again, improved, until your user uses it. If you cannot read the whole thread, say so and ask your user for a screenshot. Free; requires the 'act' scope.
Annotations the server declares
- title: Report a job
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: true
revise_moveApply your user's explicit decision to revise an accepted growth move's current managed attempt: its prepared or failed result is set aside and a new preparation attempt starts, on…No findings
Why it is in this group
- The name "revise_move" says "move": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Apply your user's explicit decision to revise an accepted growth move's current managed attempt: its prepared or failed result is set aside and a new preparation attempt starts, only if this wins. Pass the exact job_id and expected_attempt_id. This never publishes anything. Free; requires the 'act' scope.
Annotations the server declares
- title: Revise prepared work
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: true
set_output_statusResolve one drafted marketing output in the founder's review queue: action 'ship' marks it done or posted WITHOUT publishing anywhere, action 'skip' dismisses it.No findings
Why it is in this group
- The name "set_output_status" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Resolve one drafted marketing output in the founder's review queue: action 'ship' marks it done or posted WITHOUT publishing anywhere, action 'skip' dismisses it. WHEN: call 'ship' the moment the founder confirms the content is actually out, with their go and never on your own; call 'skip' when they decide against it. Posting is the human's decision; reporting the outcome is yours, and it is not optional, because an unreported result leaves the record blind to what the work earned. Report only what is true: a draft you have written is not a draft that went out. This never posts to a channel: real publishing is a separate, human-approved egress step. Free; requires the 'act' scope and Founder tier.
Annotations the server declares
- title: Record output outcome
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
set_voice_axesWrite the calibrated leans from a voice round into the FOUNDER'S OWN voice profile, the personal register, never the brand's.No findings
Why it is in this group
- The name "set_voice_axes" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Write the calibrated leans from a voice round into the FOUNDER'S OWN voice profile, the personal register, never the brand's. Two voices live here and they do not sound alike: the brand's came from the website and is what marketing pages and listings use, and this verb cannot touch it. WHEN: after a round, once an axis has enough answers to read. Send one write per round, not one per pair, and leave out an axis with too few observations: that is not a lean. Send only the axes that moved; the rest keep what they had. Free; requires the 'act' scope. WHAT COMES BACK: every axis on record, and their top moves.
Annotations the server declares
- title: Set voice style
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
ship_moveRecord completion only after the founder explicitly confirms it.No findings
Why it is in this group
- The name "ship_move" says "move": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Record completion only after the founder explicitly confirms it. Use prepared_result after reviewing the current prepared attempt, or independent_work when the founder completed it separately. Site changes need a live published_url to ship; with planned_url they stay prepared. This records an attestation; it never publishes anything. Free; requires the 'act' scope.
Annotations the server declares
- title: Record completed work
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: true
skip_moveDismiss a growth move (Skip in the Feed).No findings
Why it is in this group
- The name "skip_move" says "move": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Dismiss a growth move (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.
Annotations the server declares
- title: Skip a growth move
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
start_connectionConnect a growth data source or distribution channel: mint a one-time link the FOUNDER opens in their own browser to approve it.No findings
Why it is in this group
- The name "start_connection" says "start": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Connect a growth data source or distribution channel: mint a one-time link the FOUNDER opens in their own browser to approve it. You never complete the consent yourself; it is bound to their session. Returns url (hand it to the founder), poll_token, poll_after_seconds and expires_at; the link lasts 15 minutes. Refuses in plain words, before minting anything, when a connector is shut on this account. Free, spends nothing.
Annotations the server declares
- title: Start a connection
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: true
track_promptAdd one customer question to the AI visibility (GEO) set AfterLaunch measures this product on.No findings
Why it is in this group
- The description's first verb is "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Add one customer question to the AI visibility (GEO) set AfterLaunch measures this product on. Free, spends nothing. Two honest consequences: changing the set makes the NEXT scheduled scan run at full depth rather than skipping ahead, and it re-baselines the week-over-week trend, because a comparison across two different question sets is not a real move. So add deliberately rather than churning the list. 10 to 200 characters, deduplicated, up to the included 50. Requires the 'config' scope and the Founder plan; on a free trial the questions stay readable.
Annotations the server declares
- title: Track a question
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
undo_moveRestore a just-shipped or just-skipped growth move to pending: the self-correction verb for a wrong ship or skip.No findings
Why it is in this group
- The name "undo_move" says "move": a word for a change.
- The description says "cannot be restored".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Restore a just-shipped or just-skipped growth move to pending: the self-correction verb for a wrong ship or skip. Free; requires the 'act' scope. Idempotent on a move already pending. It never unwinds a real channel publish: a posted output stays posted, and an archived or expired move cannot be restored.
Annotations the server declares
- title: Restore a growth move
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
untrack_promptRemove one customer question from the AI visibility (GEO) set, freeing a slot against the included cap of 50.No findings
Why it is in this group
- The description's first verb is "remove": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Remove one customer question from the AI visibility (GEO) set, freeing a slot against the included cap of 50. Free, spends nothing. Same two honest consequences as adding one: the next scheduled scan runs at full depth, and the week-over-week trend re-baselines. Matched on the question text, ignoring case and punctuation, and IDEMPOTENT. Requires the 'config' scope and the Founder plan.
Annotations the server declares
- title: Stop tracking a question
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
update_draftReplace a pending growth move's marketing draft body before shipping.No findings
Why it is in this group
- The name "update_draft" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Replace a pending growth move's marketing draft body before shipping. A draft carrying an unfilled placeholder or a broken link is refused rather than saved. Free; requires the 'act' scope.
Annotations the server declares
- title: Update move draft
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
withdraw_moveApply your user's explicit decision to cancel (withdraw) unfinished work on an accepted growth move: the job is withdrawn and the move returns to pending.No findings
Why it is in this group
- The name "withdraw_move" says "withdraw": a word that usually means money moves, which cannot be taken back.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Apply your user's explicit decision to cancel (withdraw) unfinished work on an accepted growth move: the job is withdrawn and the move returns to pending. Pass the exact current job and attempt; legacy work also needs the exact move and legacy job states and updated_at. This never publishes anything. Free; requires the 'act' scope.
Annotations the server declares
- title: Cancel unfinished work
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
Changes things 1Claude Code: ask
poll_connectionDid the founder finish connecting the growth data source you handed them a link for?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 Did the founder finish connecting the growth data source you handed them a link for? Pass the poll_token you got with that link. Reports pending (wait poll_after_seconds and ask again), connected, expired (mint a fresh link) or not_found. Idempotent: nothing is spent or consumed. Read-only, free.
Annotations the server declares
- title: Check connection status
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
Only reads 26Claude Code: allow
get_activityThe product timeline: what the growth agent and the founder already did and why (drafts, ships, skips, scans, observations, decisions with their rationale), newest first.No findings
Why it is in this group
- The name "get_activity" says "get": a word for reading.
Description, as the server wrote it The product timeline: what the growth agent and the founder already did and why (drafts, ships, skips, scans, observations, decisions with their rationale), newest first. Read before acting so you never redo recent work. Read-only, free.
Annotations the server declares
- title: View recent activity
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_business_contextStructured business positioning, audience, ICP, pricing, features and competitors, plus growth_strategy: the latest saved stage, bottleneck, bets and non-goals with version, source…No findings
Why it is in this group
- The name "get_business_context" says "get": a word for reading.
Description, as the server wrote it Structured business positioning, audience, ICP, pricing, features and competitors, plus growth_strategy: the latest saved stage, bottleneck, bets and non-goals with version, source and date. Read before planning or writing. Strategy is dated judgement, not measured evidence or proof of results; check it against current founder intent. Missing facts or strategy are null. Read-only and free; never generates or revises a strategy.
Annotations the server declares
- title: View business context
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_claimsThe claim library: the measured numbers this founder will stand behind in public, for replies, posts and any marketing writing.No findings
Why it is in this group
- The name "get_claims" says "get": a word for reading.
Description, as the server wrote it The claim library: the measured numbers this founder will stand behind in public, for replies, posts and any marketing writing. Each carries the claim in one sentence, the number with its unit, keywords saying when it is relevant, and a caveat stated against the founder's own interest. READ THIS BEFORE CITING ANY NUMBER about this product, and never quote a claim without its caveat: the caveat is what makes the number safe to say. A claim marked held is NOT for use. An empty library is an answer, not an error. Read-only, free.
Annotations the server declares
- title: View claims
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_competitorsThe competitor roster with the measured stat battery for you and each rival (performance, SEO, Core Web Vitals, authority, G2 and Product Hunt presence, content freshness), plus th…No findings
Why it is in this group
- The name "get_competitors" says "get": a word for reading.
Description, as the server wrote it The competitor roster with the measured stat battery for you and each rival (performance, SEO, Core Web Vitals, authority, G2 and Product Hunt presence, content freshness), plus the founder's own edits. Read before any competitor or outreach work so a rival is never treated as a pitch target. Read-only, free.
Annotations the server declares
- title: View competitors
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_content_calendarGrowth content calendar, source drafts, current move states and X production switch.No findings
Why it is in this group
- The name "get_content_calendar" says "get": a word for reading.
Description, as the server wrote it Growth content calendar, source drafts, current move states and X production switch. Read-only. Check linkage and calendar_sync; saved words are not publication proof.
Annotations the server declares
- title: View content calendar
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_enrollmentThe product run summary for this growth engine: product_url, tier, trial_ends_at, timezone, whether autonomous work is active, and delivery settings.No findings
Why it is in this group
- The name "get_enrollment" says "get": a word for reading.
Description, as the server wrote it The product run summary for this growth engine: product_url, tier, trial_ends_at, timezone, whether autonomous work is active, and delivery settings. Credits once metering is live. Read-only, free.
Annotations the server declares
- title: View product account
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_experimentsGrowth content experiments already run, newest first, with scoped evidence.No findings
Why it is in this group
- The name "get_experiments" says "get": a word for reading.
Description, as the server wrote it Growth content experiments already run, newest first, with scoped evidence. Read-only; never runs one. Each is an observation, not a rate.
Annotations the server declares
- title: View experiments
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_kb_pageOne Memory page by slug, with its full markdown body: the record the growth marketing engine drafts from.No findings
Why it is in this group
- The name "get_kb_page" says "get": a word for reading.
Description, as the server wrote it One Memory page by slug, with its full markdown body: the record the growth marketing engine drafts from. Read-only, free.
Annotations the server declares
- title: View Memory page
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_loop_statusThe automated growth marketing loops provisioned for this product (AI visibility, competitors, channel distribution) with their autonomy level, plus runnable_loop_types: what runs …No findings
Why it is in this group
- The name "get_loop_status" says "get": a word for reading.
Description, as the server wrote it The automated growth marketing loops provisioned for this product (AI visibility, competitors, channel distribution) with their autonomy level, plus runnable_loop_types: what runs on demand. A runnable type only runs once a loop of that type is provisioned and enabled here.
Annotations the server declares
- title: View growth loop status
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_moveOne growth move: evidence, source material, instructions and prepared_result.No findings
Why it is in this group
- The name "get_move" says "get": a word for reading.
Description, as the server wrote it One growth move: evidence, source material, instructions and prepared_result. linked_article is earlier work to reuse, not a completed revision. Ready means awaiting review, not published. Closed post-trial access withholds bodies without asserting absence. tracked_link_state explains a null link (no_link, unavailable, withheld); null clicks means unreadable. Read-only, free.
Annotations the server declares
- title: View a growth move
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_outcomesWhat the shipped growth moves earned: tracked-link clicks per move, shipped counters, the weekly movement scoreboard, and whether GA4 and Search Console are connected.No findings
Why it is in this group
- The name "get_outcomes" says "get": a word for reading.
Description, as the server wrote it What the shipped growth moves earned: tracked-link clicks per move, shipped counters, the weekly movement scoreboard, and whether GA4 and Search Console are connected. Read-only, free.
Annotations the server declares
- title: View growth outcomes
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_outputRead a queue draft by id.No findings
Why it is in this group
- The name "get_output" says "get": a word for reading.
Description, as the server wrote it Read a queue draft by id. SEO linked_article {id,title,content} adds the full Markdown article.
Annotations the server declares
- title: View drafted output
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_scoreboardDid the growth work move anything?No findings
Why it is in this group
- The name "get_scoreboard" says "get": a word for reading.
Description, as the server wrote it Did the growth work move anything? The proof read for a period: AI visibility (GEO) at the START and the END of the window, the moves shipped between them, the scans that ran, and the receipts with what was verified live and the clicks each earned. ALWAYS read like_for_like before reporting a change: true means both scans asked the same tracked questions so the movement is real, false means the questions or answer source changed in the window, so it is a new baseline rather than a rise or a fall, and null means it cannot be proven either way. Never present a delta as a result when like_for_like is not true. Read-only, free.
Annotations the server declares
- title: View growth scoreboard
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_seoThe site-wide SEO audit: issue groups with severity and affected pages, the weekly score trend, page performance, links and authority, and day-0 search ranks.No findings
Why it is in this group
- The name "get_seo" says "get": a word for reading.
Description, as the server wrote it The site-wide SEO audit: issue groups with severity and affected pages, the weekly score trend, page performance, links and authority, and day-0 search ranks. Read before any SEO work of your own; the Feed seo_fix moves are minted from it. Read-only, free. Pass include_pages for the per-page detail.
Annotations the server declares
- title: View site SEO
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_setup_snippetThe paste-able 'Growth (AfterLaunch)' section for this repository's CLAUDE.md or AGENTS.md: how a coding agent should use AfterLaunch for growth, marketing, SEO, AI visibility (GEO…No findings
Why it is in this group
- The name "get_setup_snippet" says "get": a word for reading.
Description, as the server wrote it The paste-able 'Growth (AfterLaunch)' section for this repository's CLAUDE.md or AGENTS.md: how a coding agent should use AfterLaunch for growth, marketing, SEO, AI visibility (GEO), competitor and distribution work, and which tools cost money. Free, read-only. Show it to the founder and add it with their say-so.
Annotations the server declares
- title: Get setup instructions
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_snapshotThe Growth Snapshot this product run started from: positioning, the discoverability score, the actions prioritised by impact, the competitor set, and the day-0 SEO and AI visibilit…No findings
Why it is in this group
- The name "get_snapshot" says "get": a word for reading.
Description, as the server wrote it The Growth Snapshot this product run started from: positioning, the discoverability score, the actions prioritised by impact, the competitor set, and the day-0 SEO and AI visibility baselines. The stable business context, not live signal data. Read-only, free.
Annotations the server declares
- title: View growth snapshot
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_standupThe daily growth marketing standup in one call: what recently shipped and what AfterLaunch verified about it (receipts), the top ranked moves shippable now (ready; rank is the posi…No findings
Why it is in this group
- The name "get_standup" says "get": a word for reading.
Description, as the server wrote it The daily growth marketing standup in one call: what recently shipped and what AfterLaunch verified about it (receipts), the top ranked moves shippable now (ready; rank is the position among all moves, so gaps mean those ranks are not shippable now), what the engine did on its own in the last 7 days (while_you_were_gone; capped at the account's age), and whether the deep scan is still running. Relay the message field. Read-only, free.
Annotations the server declares
- title: View daily stand-up
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_visibilityThe measured AI visibility (GEO) results: how ChatGPT, Gemini, Perplexity and Google AI Overviews answer the tracked customer questions, plus share of voice, cited sources, competi…No findings
Why it is in this group
- The name "get_visibility" says "get": a word for reading.
Description, as the server wrote it The measured AI visibility (GEO) results: how ChatGPT, Gemini, Perplexity and Google AI Overviews answer the tracked customer questions, plus share of voice, cited sources, competitor-owned gaps, the trend, AI crawlability and the off-site reach fold. Every reading carries its own sample count, and the sampling block says what such a count licenses, so treat a change as indicative unless it says otherwise. Read-only, free. Pass prompt_id to drill into one question.
Annotations the server declares
- title: View AI visibility
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_voice_profileThe structured voice every AfterLaunch growth marketing draft is written in: tone, characteristic phrases, vocabulary, sentence style and what it avoids.No findings
Why it is in this group
- The name "get_voice_profile" says "get": a word for reading.
Description, as the server wrote it The structured voice every AfterLaunch growth marketing draft is written in: tone, characteristic phrases, vocabulary, sentence style and what it avoids. register says which you got, and they do not sound alike: brand is the website's voice, personal is the founder's own writing, imported came from a brief. has_profile false means that voice is not extracted yet: an answer, not an error. Read-only, free.
Annotations the server declares
- title: View voice profile
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_connectionsWhich growth data sources and distribution channels are connected: GA4 and Search Console (the measurement behind SEO and outcomes), Google Business Profile, and the LinkedIn / Red…No findings
Why it is in this group
- The name "list_connections" says "list": a word for reading.
Description, as the server wrote it Which growth data sources and distribution channels are connected: GA4 and Search Console (the measurement behind SEO and outcomes), Google Business Profile, and the LinkedIn / Reddit posting channels. Each row carries an honest state: connected, not_connected, or not_available with the reason it is shut on this account. Read-only, free.
Annotations the server declares
- title: View connections
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_feedThe ranked backlog of growth marketing moves prepared for this product across SEO, AI visibility (GEO), competitors and distribution: title, why, area, status, rank, whether readab…No findings
Why it is in this group
- The name "list_feed" says "list": a word for reading.
Description, as the server wrote it The ranked backlog of growth marketing moves prepared for this product across SEO, AI visibility (GEO), competitors and distribution: title, why, area, status, rank, whether readable full-draft material is waiting (has_draft), and draft_kind (a full draft, a brief to complete, or null). It also carries posture: who may do it, act (you can), draft_only (you draft, a person posts) or founder_voice (the founder only). Read it before improvising growth work of your own. The material BODY is not here. Live moves only unless you pass include_resolved; pass since for what is new while the deep scan adds moves. Read-only.
Annotations the server declares
- title: View growth moves
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_kb_pagesThe Memory pages: the shared record the growth marketing engine drafts from (business basics, audience, competitors, voice samples, recent observations).No findings
Why it is in this group
- The name "list_kb_pages" says "list": a word for reading.
Description, as the server wrote it The Memory pages: the shared record the growth marketing engine drafts from (business basics, audience, competitors, voice samples, recent observations). Summaries with a size hint. Read-only, free.
Annotations the server declares
- title: List Memory pages
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_outputsThe drafted marketing and distribution content produced for this product, newest first: id, loop_type, kind, status and title.No findings
Why it is in this group
- The name "list_outputs" says "list": a word for reading.
Description, as the server wrote it The drafted marketing and distribution content produced for this product, newest first: id, loop_type, kind, status and title. Read-only, free.
Annotations the server declares
- title: List drafted outputs
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_queueUnclaimed preparation jobs, oldest first.No findings
Why it is in this group
- The name "list_queue" says "list": a word for reading.
Description, as the server wrote it Unclaimed preparation jobs, oldest first. Each row carries job_id and its nullable attempt_id. Queue summaries never include prepared_content. Free; requires the 'act' scope.
Annotations the server declares
- title: View preparation queue
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_tracked_promptsThe customer questions AfterLaunch tracks: the AI visibility (GEO) question set every measurement is taken against.No findings
Why it is in this group
- The name "list_tracked_prompts" says "list": a word for reading.
Description, as the server wrote it The customer questions AfterLaunch tracks: the AI visibility (GEO) question set every measurement is taken against. Returns prompts in tracking order, cap (a hard 15) and used, plus curated: false means AfterLaunch generated them and any can be replaced. Read-only, free, on every plan.
Annotations the server declares
- title: View tracked questions
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
whoamiConfirm the AfterLaunch key works: which product run it is bound to, its scopes, tier and trial_ends_at, plus onboarding (feed_ready is false while the Growth Snapshot deep scan is…No findings
Why it is in this group
- The name "whoami" says "whoami": a word for reading.
Description, as the server wrote it Confirm the AfterLaunch key works: which product run it is bound to, its scopes, tier and trial_ends_at, plus onboarding (feed_ready is false while the Growth Snapshot deep scan is still building) and credits once metering is live.
Annotations the server declares
- title: Who am I
- readOnlyHint: true
- destructiveHint: false
- 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.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http agentic-growth-marketing https://afterlaunch.io/api/mcp --header 'Authorization: <your-authorization>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__agentic-growth-marketing__get_content_calendar",
"mcp__agentic-growth-marketing__get_experiments",
"mcp__agentic-growth-marketing__whoami",
"mcp__agentic-growth-marketing__list_feed",
"mcp__agentic-growth-marketing__get_loop_status",
"mcp__agentic-growth-marketing__get_enrollment",
"mcp__agentic-growth-marketing__list_outputs",
"mcp__agentic-growth-marketing__get_output",
"mcp__agentic-growth-marketing__get_setup_snippet",
"mcp__agentic-growth-marketing__get_visibility",
"mcp__agentic-growth-marketing__get_seo",
"mcp__agentic-growth-marketing__get_competitors",
"mcp__agentic-growth-marketing__get_outcomes",
"mcp__agentic-growth-marketing__get_snapshot",
"mcp__agentic-growth-marketing__get_activity",
"mcp__agentic-growth-marketing__list_kb_pages",
"mcp__agentic-growth-marketing__get_kb_page",
"mcp__agentic-growth-marketing__get_voice_profile",
"mcp__agentic-growth-marketing__get_business_context",
"mcp__agentic-growth-marketing__get_claims",
"mcp__agentic-growth-marketing__get_standup",
"mcp__agentic-growth-marketing__get_move",
"mcp__agentic-growth-marketing__list_connections",
"mcp__agentic-growth-marketing__list_tracked_prompts",
"mcp__agentic-growth-marketing__get_scoreboard",
"mcp__agentic-growth-marketing__list_queue"
],
"ask": [
"mcp__agentic-growth-marketing__poll_connection"
],
"deny": [
"mcp__agentic-growth-marketing__record_content",
"mcp__agentic-growth-marketing__record_claim",
"mcp__agentic-growth-marketing__set_voice_axes",
"mcp__agentic-growth-marketing__record_voice_rule",
"mcp__agentic-growth-marketing__record_profile",
"mcp__agentic-growth-marketing__add_competitor",
"mcp__agentic-growth-marketing__accept_move",
"mcp__agentic-growth-marketing__ship_move",
"mcp__agentic-growth-marketing__revise_move",
"mcp__agentic-growth-marketing__withdraw_move",
"mcp__agentic-growth-marketing__adopt_move_result",
"mcp__agentic-growth-marketing__correct_move_publication",
"mcp__agentic-growth-marketing__skip_move",
"mcp__agentic-growth-marketing__update_draft",
"mcp__agentic-growth-marketing__archive_move",
"mcp__agentic-growth-marketing__undo_move",
"mcp__agentic-growth-marketing__set_output_status",
"mcp__agentic-growth-marketing__redraft_output",
"mcp__agentic-growth-marketing__refresh_scan",
"mcp__agentic-growth-marketing__replenish_feed",
"mcp__agentic-growth-marketing__create_checkout",
"mcp__agentic-growth-marketing__create_topup",
"mcp__agentic-growth-marketing__start_connection",
"mcp__agentic-growth-marketing__disconnect_connection",
"mcp__agentic-growth-marketing__track_prompt",
"mcp__agentic-growth-marketing__untrack_prompt",
"mcp__agentic-growth-marketing__dismiss_gap",
"mcp__agentic-growth-marketing__record_insight",
"mcp__agentic-growth-marketing__propose_move",
"mcp__agentic-growth-marketing__pick_up_job",
"mcp__agentic-growth-marketing__report_job"
]
}
}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 agentic-growth-marketing. Review it before you use it.