# Persuasion Taxonomy (npm · @coppica/persuasion-mcp)

Plan and check marketing copy against the nine questions every reader asks. Free, no API key.

- Trust score: 76/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `taxonomy.coppica.com`: 87/100, [markdown](https://verifymcp.io/servers/com-coppica-persuasion-taxonomy/taxonomy.md), [page](https://verifymcp.io/servers/com-coppica-persuasion-taxonomy/taxonomy)
- npm · `@coppica/persuasion-mcp`: 76/100 (this document), [markdown](https://verifymcp.io/servers/com-coppica-persuasion-taxonomy/coppica-persuasion-mcp.md), [page](https://verifymcp.io/servers/com-coppica-persuasion-taxonomy/coppica-persuasion-mcp)

## Channel facts

- Registry: `npm`
- Package: `@coppica/persuasion-mcp`
- Version: `1.0.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 81/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known high-severity CVE affects @modelcontextprotocol/sdk 1.29.0, a direct dependency. A fixed version is available.
  - No install/post-install scripts declared.
  - 30 of 93 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: the license (MIT AND CC-BY-4.0) isn't a recognized OSI-approved license.
  - Actively maintained (last published 30 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 74/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3964 tokens (~360/item across 11 items; 9 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 96/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 88% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Persuasion Taxonomy MCP server?

Persuasion Taxonomy runs locally as an npm package, launched with npx -y @coppica/persuasion-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add com-coppica-persuasion-taxonomy -- npx -y @coppica/persuasion-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "com-coppica-persuasion-taxonomy": {
      "command": "npx",
      "args": [
        "-y",
        "@coppica/persuasion-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-coppica-persuasion-taxonomy": {
      "command": "npx",
      "args": [
        "-y",
        "@coppica/persuasion-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add com-coppica-persuasion-taxonomy -- npx -y @coppica/persuasion-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-coppica-persuasion-taxonomy": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@coppica/persuasion-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-coppica-persuasion-taxonomy --command npx --arg -y --arg @coppica/persuasion-mcp
```

### Hermes

```yaml
mcp_servers:
  com-coppica-persuasion-taxonomy:
    command: "npx"
    args: ["-y", "@coppica/persuasion-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "com-coppica-persuasion-taxonomy": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@coppica/persuasion-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-coppica-persuasion-taxonomy -t stdio -c npx -a -y @coppica/persuasion-mcp
```

### Other

```json
{
  "mcpServers": {
    "com-coppica-persuasion-taxonomy": {
      "command": "npx",
      "args": [
        "-y",
        "@coppica/persuasion-mcp"
      ]
    }
  }
}
```

## Changelog

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

### 2026-11-03 (score 76, +1)

- [security] Stability: 0.97 → pass

### 2026-11-01 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 73, 0)

- [security regression] CVE-2026-118663 affects this package: high

### 2026-10-28 (score 73, +1)

- [security regression] GHSA-f897-62hf-6gxq affects this package: high

### 2026-10-27 (score 72, 0)

- [functional regression] Security disclosure: unverified → fail

### 2026-10-25 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-24 (score 71, 0)

- [security regression] CVE-2023-54404 affects this package: high

## MCP tools (9)

### `plan_marketing_copy` (~622 tokens)

Plan marketing copy (the nine reader questions)

Plan any piece of marketing copy before you write it, whether it's an ad, a landing page, a sales page or sales letter, an email, a subject line, a social post, a headline or a video script. Give it the goal, the reader and the offer, and it tells you which of the nine questions every reader silently asks this piece has to answer, which ones deserve the most words for this reader, and a few ways to answer each one, drawn from real advertising and linked to the Persuasion Taxonomy. One option is always the established move and the rest are less expected, because left to itself a model answers every question with the move everyone else makes, and readers have learned to skim past it. So call it before you draft, even when you're sure you know how to write the piece, and when the draft is done, check it with diagnose_marketing_copy.

Input parameters:

- `audience` (string, required): Who will read it, as specifically as you can put it: their role, their situation and what they already believe.
- `awareness_level` (string): How much the reader already knows, on Eugene Schwartz's scale. Use unaware if they don't know they have the problem, problem_aware if they feel it, solution_aware if they know solutions exist, produc…
- `category` (string): The industry, if you want to compare against what brands in that category usually do. There is enough data for apparel, automotive, b2b_saas, beauty_skincare, business_coaching, consumer_tech, dtc_fo…
- `format` (string, required): The kind of copy it is: ad, landing_page, sales_letter for long-form sales copy, email, email_subject, social_post, video_script or headline.
- `goal` (string, required): What the copy has to get the reader to do. Use purchase when they should buy now, signup for an opt-in, a trial, a demo or a lead form, click when the whole job is the click (most ads and links), and…
- `offer` (string, required): What you're selling or asking for, and the main promise.
- `options_per_question` (integer): How many ways to answer each question you want to see. The default is 4.
- `persuasion_mode` (string): How hard the copy is allowed to push. Balanced is the default, persuasive and sustainable over time. Equity protects long-term trust, so it rules out fear, hype and hard-sell moves. Aggressive is for…

### `diagnose_marketing_copy` (~710 tokens)

Diagnose marketing copy (roast / review)

Review, critique or roast any piece of marketing copy, whether it's an ad, a landing page, an email, a sales page, a social post or a script, and find out why it might not persuade. Before you call it, read the copy and label each line with the one reader question it mainly answers, quoting the words exactly. Those labels go in the moves array. You get back which of the nine questions the copy answers for its goal, which it answers weakly and which it skips, along with the biggest gap and what readers do when it is missing. It also checks the order, whether the answers agree with each other, and the craft, pointing to the exact words that read as machine-written, like em dashes, "it's not X, it's Y" lines and sentences that all run the same length. Then it checks the opening line and suggests techniques from the catalog to fill the gap. Use it before you show anyone a draft you wrote, and whenever someone asks "is this good?", "roast this", "what's wrong with this copy?" or "how do I make it better?"

Input parameters:

- `awareness_level` (string): How much the reader already knows, on Eugene Schwartz's scale. Use unaware if they don't know they have the problem, problem_aware if they feel it, solution_aware if they know solutions exist, produc…
- `brief` (object): The brief, if you have it: the brand, product, offer, audience and proof. With it, the opening line gets the swap test, which asks whether a competitor could send it unchanged.
- `category` (string): The industry, if you want to compare against what brands in that category usually do. There is enough data for apparel, automotive, b2b_saas, beauty_skincare, business_coaching, consumer_tech, dtc_fo…
- `copy` (string, required): The full copy, exactly as written.
- `format` (string, required): The kind of copy it is: ad, landing_page, sales_letter for long-form sales copy, email, email_subject, social_post, video_script or headline.
- `goal` (string, required): What the copy has to get the reader to do. Use purchase when they should buy now, signup for an opt-in, a trial, a demo or a lead form, click when the whole job is the click (most ads and links), and…
- `headline` (string): The headline or opening line, if it isn't the first line of the copy.
- `moves` (array, required): Your line-by-line labels. Quote each persuasive line exactly and name the one reader question it mainly answers. Skip lines that are pure filler.
- `persuasion_mode` (string): How hard the copy is allowed to push. Balanced is the default, persuasive and sustainable over time. Equity protects long-term trust, so it rules out fear, hype and hard-sell moves. Aggressive is for…

### `explain_why_not_converting` (~514 tokens)

Explain why marketing is not converting

Work out why an ad, a landing page, an email or a whole funnel isn't converting. Start from what you can see. Maybe people don't click (a low CTR), or they click and bounce, or they read and don't buy. Maybe they abandon the checkout or the form, the leads never buy, customers buy once and leave, or emails don't get opened or get opened and nobody clicks. Whatever the symptom, you get back the reader questions most likely going unanswered, what to check in the copy first, and the problems copy can't fix that you should rule out, along with techniques to try and the test that would confirm the diagnosis. So use it whenever someone says their marketing "isn't working", "isn't converting" or "isn't selling", or asks why results dropped.

Input parameters:

- `category` (string): The industry, if you want to compare against what brands in that category usually do. There is enough data for apparel, automotive, b2b_saas, beauty_skincare, business_coaching, consumer_tech, dtc_fo…
- `details` (string): Anything you know: the numbers, what changed recently, the offer and the audience.
- `format` (string): The kind of copy it is: ad, landing_page, sales_letter for long-form sales copy, email, email_subject, social_post, video_script or headline.
- `persuasion_mode` (string): How hard the copy is allowed to push. Balanced is the default, persuasive and sustainable over time. Equity protects long-term trust, so it rules out fear, hype and hard-sell moves. Aggressive is for…
- `symptom` (string, required): What you can see happening. Use low_click_through when people see it and don't click, high_bounce when they click and leave fast, reads_but_no_action when they read and don't convert, starts_but_aban…

### `find_persuasion_techniques` (~350 tokens)

Find persuasion techniques

Search the Persuasion Taxonomy, 766 named persuasion techniques documented from real advertising and organized by the nine reader questions they answer. Describe what you want the copy to do, like build trust without testimonials, create urgency without fake scarcity, handle a price objection, make an opening less generic, prove a claim or reframe a problem. It finds the techniques that do it. Each one comes with its name and ID, a one-line definition, a real example, how common it is in a category if you name one, and a link. So reach for it when a draft relies on the obvious move and you want a less expected one, or when someone asks for tactics, angles, hooks or ideas.

Input parameters:

- `category` (string): The industry, if you want to compare against what brands in that category usually do. There is enough data for apparel, automotive, b2b_saas, beauty_skincare, business_coaching, consumer_tech, dtc_fo…
- `format` (string): The kind of copy it is: ad, landing_page, sales_letter for long-form sales copy, email, email_subject, social_post, video_script or headline.
- `limit` (integer)
- `query` (string, required): What you want the copy to do, in plain words, like "prove it works without testimonials".
- `question` (string): Set this to see only the techniques that answer one reader question.

### `get_persuasion_technique` (~225 tokens)

Get a persuasion technique

Look up one persuasion technique by its ID (like PT-PRV-10000), its slug or its name. You get the full definition, why it works, when it lands and when it backfires, real examples from advertising, related and opposite techniques, and a link you can cite. Use it before you apply or recommend a technique so you get it right, and whenever someone asks what a tactic is called or how it works.

Input parameters:

- `category` (string): The industry, if you want to compare against what brands in that category usually do. There is enough data for apparel, automotive, b2b_saas, beauty_skincare, business_coaching, consumer_tech, dtc_fo…
- `id` (string, required): The PT-ID, the slug or the exact name of the technique.

### `check_headlines` (~390 tokens)

Check and compare headlines, hooks, and subject lines

Check headlines, email subject lines, ad openings, video hooks, social post openings and first lines, and compare options against each other. For each line it tells you whether the line does its job in that spot, meaning which of the nine reader questions it answers, and whether a competitor could send it unchanged. It also shows exactly what a reader sees before the cutoff, flags anything that fails outright, and brings in evidence from thousands of real headline tests. Then it tells you what each option is betting on and which two to test. Before you call it, list the reader questions each line answers and quote the exact words doing the work. Use it whenever you write headlines, hooks or subject lines, whenever you have to choose between them, and whenever someone asks "which one is best?" You won't get a score out of ten. Nobody can predict a winner from the words alone, and that includes this tool.

Input parameters:

- `awareness_level` (string): How much the reader already knows, on Eugene Schwartz's scale. Use unaware if they don't know they have the problem, problem_aware if they feel it, solution_aware if they know solutions exist, produc…
- `brief` (object): The brief. The swap test needs it to tell whether a competitor could send the line unchanged, and without it no line can pass.
- `follows` (string): What the reader saw just before this line, like the ad before a landing page headline, or the headline or subject before a first line.
- `lines` (array, required)
- `slot` (string, required): Where the lines will appear: email_subject, ad_opening, landing_page_headline, first_line, video_hook, social_post_open, sales_letter_headline. Each spot has its own job, and the check tells you what…

### `check_marketing_claims` (~141 tokens)

Check marketing claims and CTAs

Check whether marketing claims and calls to action are specific enough to believe. It catches the vague superlative, like "the best" or "#1", that readers discount on sight. It catches promises with no proof behind them and results with no mechanism, and it flags the generic buttons everyone uses, like "Learn more" and "Get started". Then it tells you how to fix each one. Use it when you write or review claims like "results in days", "trusted by thousands" or "the #1 tool", and for any button text. For headlines, check_headlines does the full job.

Input parameters:

- `claims` (array, required)

### `plan_ab_test` (~287 tokens)

Plan an A/B test

Plan an A/B test for marketing copy. Give it the current conversion rate, the smallest lift worth detecting and the daily traffic, and it tells you how many visitors each version needs and how many days to run. It also frames the test as two different answers to the same reader question, so the result teaches you something you can reuse, and not just that "B won". Use it when someone asks how long to run a test, how much traffic they need, whether a test is worth running, or what to test next.

Input parameters:

- `baseline_conversion_rate_percent` (number, required): The current conversion rate, in percent, so 3 means 3% and 0.8 means 0.8%.
- `confidence` (number)
- `daily_visitors` (number, required): How many visitors a day enter the test, across all versions.
- `minimum_detectable_lift_percent` (number, required): The smallest relative lift worth detecting, in percent. 20 means a 20% lift, like going from 3% to 3.6%.
- `power` (number)
- `question` (string): The reader question both versions answer, each in its own way.
- `version_a` (string): How version A answers it.
- `version_b` (string): How version B answers it.
- `versions` (integer): How many versions, counting the original.

### `read_ab_test_result` (~209 tokens)

Read an A/B test result

Read the result of an A/B test. You get each version's conversion rate and lift, whether the difference is statistically significant, the confidence interval, and the chance each version really beats the original. It also warns you about the things that make a test result lie. Those include too few conversions, traffic that didn't split the way it should (a sample ratio mismatch), stopping the moment it looked good, and testing too many versions at once. So use it whenever someone shares test numbers, or asks "did my test win?", "is this significant?", "which version won?" or "should I keep it running?"

Input parameters:

- `confidence` (number)
- `intended_split` (array): How you meant to split the traffic, like [50, 50]. The default is an even split.
- `question` (string): The reader question the versions answered in different ways.
- `versions` (array, required): Each version with its visitors and conversions. Put the original, the control, first.

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/com-coppica-persuasion-taxonomy/coppica-persuasion-mcp#diagnostics

## Score history

- 2026-11-05: 76
- 2026-11-04: 76
- 2026-11-03: 76
- 2026-11-02: 75
- 2026-11-01: 75
- 2026-10-31: 74
- 2026-10-30: 74
- 2026-10-29: 73
- 2026-10-28: 73
- 2026-10-27: 72
- 2026-10-26: 72
- 2026-10-25: 72
- 2026-10-24: 71
- 2026-10-23: 71
- 2026-10-22: 70
- 2026-10-21: 70
- 2026-10-20: 69
- 2026-10-19: 69
- 2026-10-18: 68
- 2026-10-17: 68
- 2026-10-16: 67
- 2026-10-15: 67
- 2026-10-14: 66
- 2026-10-13: 31
- 2026-10-12: 31
- 2026-10-11: 31
- 2026-10-07: 31
- 2026-10-05: 67
- 2026-10-04: 67

## Common questions

### What is the Persuasion Taxonomy MCP server?

Persuasion Taxonomy is an MCP server listed in the public MCP registry as com.coppica/persuasion-taxonomy. Plan and check marketing copy against the nine questions every reader asks. Free, no API key. This page covers its npm package (@coppica/persuasion-mcp).

### Is the Persuasion Taxonomy MCP server safe to use?

Persuasion Taxonomy scores 76 out of 100 on VerifyMCP. We recorded 8 known advisories against it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Persuasion Taxonomy MCP server expose?

Persuasion Taxonomy exposes 9 tools: plan_marketing_copy, diagnose_marketing_copy, explain_why_not_converting, find_persuasion_techniques, get_persuasion_technique, and 4 more. Their descriptions and schemas cost roughly 3,448 tokens of context every time the server is loaded.

### Is the Persuasion Taxonomy MCP server still maintained?

Persuasion Taxonomy is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Persuasion Taxonomy MCP server under?

Persuasion Taxonomy declares the MIT AND CC-BY-4.0 licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.

### What did VerifyMCP test on the Persuasion Taxonomy MCP server?

VerifyMCP ran 16 checks on Persuasion Taxonomy, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- npm package: https://www.npmjs.com/package/@coppica/persuasion-mcp
- Socket report: https://socket.dev/npm/package/@coppica/persuasion-mcp
- Repository: https://github.com/Otha-Labs/persuasion-mcp
- Website: https://taxonomy.coppica.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-coppica-persuasion-taxonomy/coppica-persuasion-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-coppica-persuasion-taxonomy/coppica-persuasion-mcp/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/com-coppica-persuasion-taxonomy/coppica-persuasion-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-coppica-persuasion-taxonomy/coppica-persuasion-mcp
