Skip to main content
Glama
AxelVerneBooks

marketing-scope-mcp

marketing-scope-mcp

Campaign pre-flight for AI agents. Plan the campaign, score the offers explainably, build a registry-backed plan, then verify every tactic cites a scored offer and names a success metric — before any money is spent.

The sibling of research-scope-mcp (sources → citations) applied to marketing: tactics → scored offers.

The discipline

plan_campaign  →  score_offer  →  build_plan  →  check_plan
   (strategy)      (0–100)         (shell)        (gate)
  1. plan_campaign(objective) — decompose a marketing goal into offer targets, channel targets, anti-targets (budget black holes), and kill criteria. Kill criteria are hard stops, not suggestions.

  2. score_offer(offer) — one offer statement graded on an explainable 0–100 scale: clarity 20 / audience specificity 24 / differentiation 20 / proof & risk reversal 20 / call to action 16. Grades: A ≥ 80, B ≥ 65, C ≥ 45, D < 45. Every dimension returns with its evidence, so the number is auditable, not a vibe.

  3. build_plan(goal, offers[]) — writes a campaign-plan shell (strategy, channel briefs, numbered offer registry, scoring appendix) and rejects any offer that was never scored, naming them.

  4. check_plan(plan_id | plan_path) — every tactic must cite a registry offer ([O1]-style) and name a success metric. Violations come back as an error list — never a silent pass.

Related MCP server: PrePilot MCP Server

Install

Node ≥ 20.

npm install -g marketing-scope-mcp
# or run from source:
git clone https://github.com/AxelVerneBooks/marketing-scope-mcp
cd marketing-scope-mcp && npm install && npm run build

Claude Code

claude mcp add marketing-scope -- node /path/to/dist/index.js

Cursor (.cursor/mcp.json)

{ "mcpServers": { "marketing-scope": { "command": "node", "args": ["/path/to/dist/index.js"] } } }

Streamable HTTP

node dist/index.js --http --port 3002        # serves MCP at http://127.0.0.1:3002/mcp

Data dir (plans on disk) defaults to ./data; override with MARKETING_SCOPE_DATA_DIR.

Example session

> plan_campaign(objective: "sell 30 copies of the build manual in 30 days")
  → offer targets, channel targets, kill criteria incl.
    "Every scored offer below 45/100 → STOP; rework before spending"

> score_offer(offer: "...12 print-ready farm ledgers only $19, includes
   wall chart — unlike generic ledgers it strips to 40 records a season.
   Start today.")
  → 88/100 (A), breakdown with per-dimension evidence

> build_plan(goal: ..., offers: [that exact text])   # unscored → hard error
> check_plan(...)   # orphan tactics → error list; metric-less → flagged

License

MIT — see LICENSE.

Available Tools

4 tools
build_planBuild campaign-plan shellA

Build a campaign-plan shell from already-scored offers: strategy stubs, channel briefs, numbered offer registry, scoring appendix. Writes a markdown file under data/campaigns/ and returns the plan id plus the shell text. Do NOT call it before each offer has a score_offer — unscored offer texts are rejected with an error naming them. Sibling distinction: this creates the shell; check_plan later validates everything written against it.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesCampaign goal / title
offersYesOffer texts previously scored with score_offer (exact text match)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=false), and the description adds non-obvious behavior: it writes a markdown file under data/campaigns/, returns the plan id plus shell text, and rejects unscored offers with an error that names them. It does not state what happens on repeat calls (overwrite vs. duplicate) despite idempotentHint=false, which is the one remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what is produced, followed by the precondition and the sibling routing. Every clause carries information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description compensates by stating the return values (plan id plus shell text) and the side effect (markdown file location). Combined with the 100%-covered input schema and annotations, an agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented in the schema; the description mostly restates that offers come from score_offer. It adds no format or matching detail beyond the schema's 'exact text match' note, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (build) and resource (campaign-plan shell) and enumerates the four artifacts produced: strategy stubs, channel briefs, numbered offer registry, scoring appendix. It explicitly distinguishes itself from the sibling check_plan ('this creates the shell; check_plan later validates everything written against it').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit precondition ('Do NOT call it before each offer has a score_offer'), names the failing behavior when violated, and routes to the alternative sibling check_plan for validation. The when-to-use and when-not-to-use conditions are both stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_planCheck plan tactic coverageA
Read-onlyIdempotent

Verify every substantive campaign tactic (a) cites at least one scored offer from the registry and (b) names a success metric. Violations are returned as an error list — never a silent pass. Read-only tool: inspects the registry and the plan file but writes nothing. Use it after every build_plan and again after any manual edit; do NOT use it on arbitrary markdown that never went through build_plan without first scoring its offers. Sibling distinction: build_plan creates the registry-backed shell; check_plan validates whatever is on disk against that registry.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idNoPlan id returned by build_plan
plan_pathNoPath to a campaign markdown file (overrides plan_id)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), but the description adds meaningful behavior: violations come back as an error list and never a silent pass, and it states which artifacts it inspects (registry + plan file). The 'writes nothing' clause partly restates readOnlyHint, so it falls just short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the verification criteria come first, then usage, then sibling distinction. Every sentence contributes, though the 'read-only tool ... writes nothing' clause is slightly redundant with the annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by describing the return contract (error list, never a silent pass) and the two input sources. For a validator tool this is complete enough for an agent to invoke and interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the 'overrides plan_id' precedence, so the schema carries the parameter meaning. The description adds no further syntax, format, or default details beyond what is already documented, making 3 the appropriate baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verb (verify) and resource (campaign tactics) with the exact criteria checked: offer citation and success metric. Explicitly names the sibling build_plan and contrasts its role (creates the shell vs validates on disk), so the agent can distinguish them without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger ('after every build_plan and again after any manual edit') plus an explicit exclusion ('do NOT use it on arbitrary markdown that never went through build_plan without first scoring its offers'). Both when and when-not are covered with a named alternative workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_campaignPlan a campaignA
Read-onlyIdempotent

Turn a campaign objective into a pre-spend plan: offer targets, channel targets, anti-targets (budget black holes), and kill criteria. Purpose: decompose a marketing goal into scoreable tactics BEFORE any spend. Use this before score_offer on any new product/launch; re-plan only when kill criteria trigger. Sibling distinction: score_offer grades ONE offer statement; this plans the whole campaign strategy.

ParametersJSON Schema
NameRequiredDescriptionDefault
objectiveYesWhat the campaign must accomplish, e.g. 'sell 30 copies of the build manual in 30 days'
audience_hintsNoWhere the audience already gathers, e.g. ['r/sysadmin', 'EMT Facebook groups', 'existing email list']

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful non-annotation context: this is a pre-spend planning step whose outputs (targets, anti-targets, kill criteria) drive later scoring, and re-planning is gated on kill criteria. It stops short of describing how the plan is returned or how scoreable tactics are structured.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and its outputs, then layers purpose, usage, and sibling routing. Dense but every clause carries routing or scope information; the parenthetical labels ('budget black holes') add slight bulk without new meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates what the plan contains and when it is consumed, which is enough for correct invocation. It does not address the other siblings (build_plan, check_plan), leaving a minor gap in the workflow picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented with examples in the schema itself. The description does not add format, syntax, or constraint detail beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (turn a campaign objective into a pre-spend plan) and enumerates the concrete artifacts produced (offer targets, channel targets, anti-targets, kill criteria). It explicitly separates itself from score_offer, so an agent can route correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit timing ('before score_offer on any new product/launch') and an explicit re-use condition ('re-plan only when kill criteria trigger'). It also names the alternative tool and the boundary condition that selects between them, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_offerScore an offerA
Idempotent

Score one offer statement (the exact sentence a prospect would read) on an explainable 0–100 offer-strength scale: clarity 20 / audience specificity 24 / differentiation 20 / proof & risk reversal 20 / call to action 16. Grades: A >= 80, B >= 65, C >= 45, D < 45. Every dimension comes back WITH its evidence, so the number is auditable rather than a vibe. Side effect: the score is cached in an in-memory registry keyed by the exact offer text (lost on restart; re-score before finalizing a plan). Do NOT use it as a general copy critique — it grades offer statements, not landing pages. Sibling distinction: plan_campaign plans the strategy; this grades one sentence; build_plan consumes the scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
offerYesThe offer statement exactly as a prospect would read it
audienceNoOptional explicit audience statement, folded into audience-specificity scoring

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses a real side effect beyond the annotations: the score is written to an in-memory registry keyed by exact offer text, is lost on restart, and should be re-scored before finalizing a plan. It also explains that every dimension returns WITH its evidence (auditable, not a vibe), which the annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and scoring model, then side effect, then exclusions and sibling routing. Dense but every sentence carries decision-relevant information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description explains the return (per-dimension evidence + grade) and flagging of statefulness (cache lost on restart). Combined with the sibling map and explicit scope limits, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already carries both parameters. The description adds value by tying 'audience' to a specific weighted dimension (audience specificity, 24 points) and stressing 'the exact sentence a prospect would read', clarifying the precision the 'offer' string must have.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Score) and resource (one offer statement) plus the exact scoring model and grade bands, so the agent knows precisely what comes back. It also explicitly names what it is not (landing-page/copy critique) and distinguishes itself from plan_campaign and build_plan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit exclusion ('Do NOT use it as a general copy critique — it grades offer statements, not landing pages') and an explicit sibling routing map: plan_campaign plans strategy, this grades a sentence, build_plan consumes the scores. Nothing about when to reach for it is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observedbuild_plan
    • First observedcheck_plan
    • First observedplan_campaign
    • First observedscore_offer

TDQS

A4.6/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with explicit sibling distinctions: plan_campaign plans strategy, score_offer grades a single offer, build_plan constructs the plan shell, and check_plan validates. No overlapping purposes or ambiguous boundaries.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: plan_campaign, score_offer, build_plan, check_plan. The convention is predictable and readable throughout.

Tool Count5/5

Four tools exactly cover the campaign planning workflow—plan, score, build, check—each earning its place without redundancy or bloat. The count matches the scope perfectly.

Completeness5/5

The tool set covers the full lifecycle from initial strategy planning through offer scoring, plan construction, and final validation against the registry. No obvious gaps for the stated marketing-scope domain; agents can complete the intended workflow end-to-end.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Validates startup ideas with a deterministic scorecard, evidence brief, and verdict before code is written, integrating with MCP-aware build agents to avoid building dead-on-arrival products.
    1
    9 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI clients to compose and execute marketing campaigns by mapping free-form intent to a deterministic plan of over 1,000 production-tested skills, supporting multiple workflows across paid ads, SEO, content, and more.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to perform marketing operations like campaign management, content creation, and outreach, with a tiered approval model ensuring human oversight for consequential actions.
    MIT