Server definition
- Hash
- sha256:fcde100c91aa66b9bde324bbc83713185653b37448b811909fa5428c55d39763
- What it is
- What a remote MCP server returned when asked what it offers: 8 tools
The blob, as servednamed by its sha256
{
"instructions": "marketinque gives an agent a SaaS launch plan (353 steps in a tree with prerequisites) and a directory index (958 places that give a startup a backlink; 95 free and dofollow, most with the submission page on record) as tools. This connection is the FREE tier: read the plan and the index, and keep the founder's progress in marketinque.json in their repository (pass its done/not_applicable lists to next_steps). Project features (the idea queue, kit, dossier, signals, nightly routine) are for marketinque customers and open by waitlist; join_waitlist puts the founder on it, only with their explicit yes. Two jobs, two prompts: get-backlinks (submit the product to directories) and launch-plan (work the next unlocked steps). Run one; each says exactly what to do and what never to do in the browser: no accounts, no passwords, no CAPTCHAs, no final submit — those are the founder's.",
"tools": [
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"description": "The catalog slug, e.g. \"saashub\".",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_directory",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"done": {
"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.",
"items": {
"type": "string"
},
"type": "array"
},
"node": {
"description": "A phase or objective slug from the outline, e.g. \"p2\" or \"p2-dr-assets\".",
"type": "string"
},
"not_applicable": {
"description": "Step slugs the founder ruled out — the \"not_applicable\" list of marketinque.json. Free tier only; ignored for a project.",
"items": {
"type": "string"
},
"type": "array"
},
"traits": {
"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.",
"items": {
"enum": [
"b2b",
"b2c",
"ai-native",
"dev-tool",
"no-code",
"mcp",
"has-integrations",
"eu-traffic",
"mobile-app"
],
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"name": "get_plan",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"done": {
"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.",
"items": {
"type": "string"
},
"type": "array"
},
"not_applicable": {
"description": "Step slugs the founder ruled out — the \"not_applicable\" list of marketinque.json. Free tier only; ignored for a project.",
"items": {
"type": "string"
},
"type": "array"
},
"slug": {
"description": "The step slug exactly as get_plan or next_steps returned it, e.g. \"p2-dest-alternatives\".",
"type": "string"
},
"traits": {
"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.",
"items": {
"enum": [
"b2b",
"b2c",
"ai-native",
"dev-tool",
"no-code",
"mcp",
"has-integrations",
"eu-traffic",
"mobile-app"
],
"type": "string"
},
"type": "array"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_step",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_submission_kit",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"confirmed": {
"description": "True only if the founder explicitly agreed to join, in this session.",
"type": "boolean"
},
"email": {
"description": "The founder’s email, as they gave it.",
"maxLength": 254,
"type": "string"
},
"product_url": {
"description": "Their product, so the invitation can refer to it.",
"format": "uri",
"type": "string"
}
},
"required": [
"email",
"confirmed"
],
"type": "object"
},
"name": "join_waitlist",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"category": {
"description": "Filter by the catalog category, e.g. \"AI Tools\", \"Software Reviews\".",
"type": "string"
},
"limit": {
"description": "Default 25.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"min_dr": {
"description": "Only rows with at least this domain rating (0–100).",
"maximum": 100,
"minimum": 0,
"type": "integer"
},
"offset": {
"description": "Rows to skip, for paging past `limit`.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"phase": {
"description": "bl-sprint (default) · bl-reach (free, nofollow/host-scoped) · bl-paid · bl-optional · bl-tail",
"enum": [
"bl-sprint",
"bl-reach",
"bl-paid",
"bl-optional",
"bl-tail"
],
"type": "string"
},
"unrecorded_only": {
"description": "Project only: skip rows already recorded — listed, submitted or skipped. The next batch, in one call.",
"type": "boolean"
}
},
"type": "object"
},
"name": "list_directories",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"checkable_only": {
"description": "Only steps with a target to record or an automatic check.",
"type": "boolean"
},
"done": {
"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.",
"items": {
"type": "string"
},
"type": "array"
},
"free_only": {
"description": "Only steps that cost nothing.",
"type": "boolean"
},
"limit": {
"description": "How many next steps to list (default 8).",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"minutes": {
"description": "Time available now; the sprint is packed into it (default 120).",
"maximum": 2400,
"minimum": 5,
"type": "integer"
},
"not_applicable": {
"description": "Step slugs the founder ruled out — the \"not_applicable\" list of marketinque.json. Free tier only; ignored for a project.",
"items": {
"type": "string"
},
"type": "array"
},
"traits": {
"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.",
"items": {
"enum": [
"b2b",
"b2c",
"ai-native",
"dev-tool",
"no-code",
"mcp",
"has-integrations",
"eu-traffic",
"mobile-app"
],
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"name": "next_steps",
"outputSchema": null
},
{
"description": "Which mode this connection is in — anonymous (read-only) or a project — and what that unlocks.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "whoami",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:fcde100c91aa66b9bde324bbc83713185653b37448b811909fa5428c55d39763 | sha256sum