A 361-step SaaS launch plan and 958 backlink sources as tools an agent reads, acts on and records.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. "Bearer <project token>" for a marketinque project (projects open by waitlist; the token is minted in the project's console). Without it the server is the free tier: the plan, the index and the two briefs, read-only.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
One directory from the index: domain rating, dofollow, price, category, the submission page URL (or where to look for it), account_required (the page redirected to a sign-in when probed — most rows want a sign-in at submit anyway), founder_fills (a form an agent cannot drive), the note from the last session that worked it, and — for a project — the outcome already recorded. Read the note before opening the page. Read-only.
The catalog slug, e.g. "saashub".
One directory from the index: domain rating, dofollow, price, category, the submission page URL (or where to look for it), account_required (the page redirected to a sign-in when probed — most rows want a sign-in at submit anyway), founder_fills (a form an agent cannot drive), the note from the last session that worked it, and — for a project — the outcome already recorded. Read the note before opening the page. Read-only.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The catalog slug, e.g. "saashub". |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The catalog slug, e.g. \"saashub\"."
}
}
}The launch plan. With no `node`: the outline — phases and objectives with step counts. With `node` (a phase or objective slug): every step under it, with status and whether it is unlocked. Anonymous callers pass `done`/`not_applicable`/`traits`; a project uses its own.
| Argument | Type | Description |
|---|---|---|
| done | array | Step slugs already done — the "done" list of marketinque.json. Free tier only; a project's own ticks are used instead and this is ignored. |
| node | string | A phase or objective slug from the outline, e.g. "p2" or "p2-dr-assets". |
| traits | array | Product traits that decide which steps apply (b2b, b2c, ai-native, dev-tool, no-code, mcp, has-integrations, eu-traffic, mobile-app); omit for the generic plan. Free tier only; a project's saved traits are used instead. |
| not_applicable | array | Step slugs the founder ruled out — the "not_applicable" list of marketinque.json. Free tier only; ignored for a project. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"done": {
"type": "array",
"items": {
"type": "string"
},
"description": "Step slugs already done — the \"done\" list of marketinque.json. Free tier only; a project's own ticks are used instead and this is ignored."
},
"node": {
"type": "string",
"description": "A phase or objective slug from the outline, e.g. \"p2\" or \"p2-dr-assets\"."
},
"traits": {
"type": "array",
"items": {
"enum": [
"b2b",
"b2c",
"ai-native",
"dev-tool",
"no-code",
"mcp",
"has-integrations",
"eu-traffic",
"mobile-app"
],
"type": "string"
},
"description": "Product traits that decide which steps apply (b2b, b2c, ai-native, dev-tool, no-code, mcp, has-integrations, eu-traffic, mobile-app); omit for the generic plan. Free tier only; a project's saved traits are used instead."
},
"not_applicable": {
"type": "array",
"items": {
"type": "string"
},
"description": "Step slugs the founder ruled out — the \"not_applicable\" list of marketinque.json. Free tier only; ignored for a project."
}
}
}One plan step in full: title, detail, the target URL where it happens, the play it follows, the prerequisite slugs and whether they are met (unlocked), how it verifies (self, evidence URL or an automatic signal), minutes and cost, and founder_steps when part of the step is the founder’s own (an account, a handle): the exact page and what to do there, to hand over rather than do. Read it before working a step that next_steps or get_plan returned; the slug comes from those. Read-only; no side effects.
| Argument | Type | Description |
|---|---|---|
| done | array | Step slugs already done — the "done" list of marketinque.json. Free tier only; a project's own ticks are used instead and this is ignored. |
| slug* | string | The step slug exactly as get_plan or next_steps returned it, e.g. "p2-dest-alternatives". |
| traits | array | Product traits that decide which steps apply (b2b, b2c, ai-native, dev-tool, no-code, mcp, has-integrations, eu-traffic, mobile-app); omit for the generic plan. Free tier only; a project's saved traits are used instead. |
| not_applicable | array | Step slugs the founder ruled out — the "not_applicable" list of marketinque.json. Free tier only; ignored for a project. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"done": {
"type": "array",
"items": {
"type": "string"
},
"description": "Step slugs already done — the \"done\" list of marketinque.json. Free tier only; a project's own ticks are used instead and this is ignored."
},
"slug": {
"type": "string",
"description": "The step slug exactly as get_plan or next_steps returned it, e.g. \"p2-dest-alternatives\"."
},
"traits": {
"type": "array",
"items": {
"enum": [
"b2b",
"b2c",
"ai-native",
"dev-tool",
"no-code",
"mcp",
"has-integrations",
"eu-traffic",
"mobile-app"
],
"type": "string"
},
"description": "Product traits that decide which steps apply (b2b, b2c, ai-native, dev-tool, no-code, mcp, has-integrations, eu-traffic, mobile-app); omit for the generic plan. Free tier only; a project's saved traits are used instead."
},
"not_applicable": {
"type": "array",
"items": {
"type": "string"
},
"description": "Step slugs the founder ruled out — the \"not_applicable\" list of marketinque.json. Free tier only; ignored for a project."
}
}
}What every directory form asks for, written once. A project returns its product profile and brand dossier plus the state of the five kit steps; anonymous callers get the five steps to draft from the product site.
No arguments.
{
"type": "object",
"properties": {}
}Put the founder on the marketinque waitlist for a project (the idea queue, kit, dossier, signals, nightly routine — free for now, opening by waitlist). Call ONLY after the founder gave you their email and said yes in this session; `confirmed` attests that. One email, no spam; they can unsubscribe from any mail.
| Argument | Type | Description |
|---|---|---|
| email* | string | The founder’s email, as they gave it. |
| confirmed* | boolean | True only if the founder explicitly agreed to join, in this session. |
| product_url | string | Their product, so the invitation can refer to it. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"confirmed"
],
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"description": "The founder’s email, as they gave it."
},
"confirmed": {
"type": "boolean",
"description": "True only if the founder explicitly agreed to join, in this session."
},
"product_url": {
"type": "string",
"format": "uri",
"description": "Their product, so the invitation can refer to it."
}
}
}Places that give a startup a backlink, one phase at a time in the order that works. Default phase bl-sprint: the 95 free, dofollow, page-scoped, graded rows. Each row carries its submission page (or where to find it) and, for a project, the listing already recorded.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 25. |
| phase | string | bl-sprint (default) · bl-reach (free, nofollow/host-scoped) · bl-paid · bl-optional · bl-tail |
| min_dr | integer | Only rows with at least this domain rating (0–100). |
| offset | integer | Rows to skip, for paging past `limit`. |
| category | string | Filter by the catalog category, e.g. "AI Tools", "Software Reviews". |
| unrecorded_only | boolean | Project only: skip rows already recorded — listed, submitted or skipped. The next batch, in one call. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Default 25."
},
"phase": {
"enum": [
"bl-sprint",
"bl-reach",
"bl-paid",
"bl-optional",
"bl-tail"
],
"type": "string",
"description": "bl-sprint (default) · bl-reach (free, nofollow/host-scoped) · bl-paid · bl-optional · bl-tail"
},
"min_dr": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Only rows with at least this domain rating (0–100)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, for paging past `limit`."
},
"category": {
"type": "string",
"description": "Filter by the catalog category, e.g. \"AI Tools\", \"Software Reviews\"."
},
"unrecorded_only": {
"type": "boolean",
"description": "Project only: skip rows already recorded — listed, submitted or skipped. The next batch, in one call."
}
}
}The next unlocked, unstarted steps in tree order, and a sprint packed into `minutes`. Anonymous callers pass `done`/`not_applicable` (from marketinque.json) and `traits`; a project uses its own.
| Argument | Type | Description |
|---|---|---|
| done | array | Step slugs already done — the "done" list of marketinque.json. Free tier only; a project's own ticks are used instead and this is ignored. |
| limit | integer | How many next steps to list (default 8). |
| traits | array | Product traits that decide which steps apply (b2b, b2c, ai-native, dev-tool, no-code, mcp, has-integrations, eu-traffic, mobile-app); omit for the generic plan. Free tier only; a project's saved traits are used instead. |
| minutes | integer | Time available now; the sprint is packed into it (default 120). |
| free_only | boolean | Only steps that cost nothing. |
| checkable_only | boolean | Only steps with a target to record or an automatic check. |
| not_applicable | array | Step slugs the founder ruled out — the "not_applicable" list of marketinque.json. Free tier only; ignored for a project. |
Which mode this connection is in — anonymous (read-only) or a project — and what that unlocks.
No arguments.
{
"type": "object",
"properties": {}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"done": {
"type": "array",
"items": {
"type": "string"
},
"description": "Step slugs already done — the \"done\" list of marketinque.json. Free tier only; a project's own ticks are used instead and this is ignored."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many next steps to list (default 8)."
},
"traits": {
"type": "array",
"items": {
"enum": [
"b2b",
"b2c",
"ai-native",
"dev-tool",
"no-code",
"mcp",
"has-integrations",
"eu-traffic",
"mobile-app"
],
"type": "string"
},
"description": "Product traits that decide which steps apply (b2b, b2c, ai-native, dev-tool, no-code, mcp, has-integrations, eu-traffic, mobile-app); omit for the generic plan. Free tier only; a project's saved traits are used instead."
},
"minutes": {
"type": "integer",
"maximum": 2400,
"minimum": 5,
"description": "Time available now; the sprint is packed into it (default 120)."
},
"free_only": {
"type": "boolean",
"description": "Only steps that cost nothing."
},
"checkable_only": {
"type": "boolean",
"description": "Only steps with a target to record or an automatic check."
},
"not_applicable": {
"type": "array",
"items": {
"type": "string"
},
"description": "Step slugs the founder ruled out — the \"not_applicable\" list of marketinque.json. Free tier only; ignored for a project."
}
}
}