RecipesMCP

About MCP

Supercharge your AI assistant with professional-grade content analysis. The Markup AI MCP server connects MCP clients like Claude Desktop, Claude Code, and Cursor to Markup AI’s content agents, giving you brand-voice, clarity, persona, terminology, and AI-search checks directly in your AI-powered workflows.

What is MCP?

Model Context Protocol (MCP) is an open standard that lets AI assistants call external tools and services. By connecting the Markup AI MCP server, you give your AI assistant the ability to:

  • 🎯 Check brand voice — flag passages that have drifted from your approved voice
  • 👤 Test against a persona — see how a target reader reacts to your content
  • ✏️ Improve clarity — surface hard-to-read sentences with suggested rewrites
  • 🤖 Detect AI-sounding copy — catch the giveaways of LLM-written text
  • 📒 Enforce terminology — check content against your approved term list
  • 🔍 Get found by AI search — check snippet readiness, sourcing, and freshness

Three tools, fourteen agents

The server exposes three tools. You describe what you want checked, and the review runs the right set of agents together in a single call.

ToolUse it when
markupai_reviewStart here. The user wants content reviewed, checked, or cleaned up. Optionally pass a goal and the server picks the agents for you.
markupai_run_agentsYou need an exact, deterministic set of agents—named checks, or a fixed set an integration depends on.
markupai_capabilities_and_configsYou want to see which agents your organization can run, and which personas, voice profiles, style guides, and content profiles are available to apply.

An agent is a specialized content check—brand voice, persona reaction, sentence clarity, terminology, claims, and more. Each agent runs against the settings configured for your organization in the Markup AI console. You configure your brand voice, personas, terminology, and style guide once, and every call applies them automatically.

Agents are addressed by their stable name (brand_voice, sentence_clarity, generic_claims, …). The names are the same ones the REST API uses, so what you learn in one carries over to the other.

Setup

Connect to the hosted MCP server at https://api.markup.ai/mcp/ from any MCP-compatible client. Add the server URL to your client and authenticate.

Include the trailing slash (/mcp/). That’s the canonical URL: it connects directly and returns the OAuth discovery details clients need. The no-slash form only resolves through a redirect, so prefer /mcp/ everywhere.

You can authenticate in one of two ways:

  • Log in with your Markup AI account (OAuth). When your client supports it, add the server and follow the browser prompt to authorize. Best for interactive use.
  • Use an API key. Send your key in an Authorization header with the value Bearer YOUR_API_KEY. Best for headless or shared configurations.

Prerequisites

Before you begin, ensure you have:

  • An MCP-compatible client (Claude Desktop, Claude Code, Cursor, or similar)
  • A Markup AI account (sign up) — and an API key if your client authenticates with a header

Quick Setup Guide

1

Create a Markup AI account

  1. Visit https://console.markup.ai/signup and create an account.
  2. Configure your brand voice, personas, terminology, and style guide in the console—these are what the agents apply.
  3. If your client authenticates with an API key, copy your key from the console and keep it handy.

Store your key securely. Prefer environment variables or a secrets manager over committing keys to code.

2

Add the server to your client

Point your client at https://api.markup.ai/mcp/ and authenticate with OAuth login or an Authorization: Bearer YOUR_API_KEY header. Follow the client-specific guide in the MCP Examples section below.

3

Verify

Start a new session and confirm the three Markup AI tools appear. Try one of the example prompts.

MCP Examples

Explore client‑specific setup guides. Each page includes configuration, restart/verify steps, and troubleshooting.

The tools

markupai_review

Review content against your organization’s configured quality checks in one call. This is the tool your assistant should reach for whenever someone says “check this,” “review this,” or “clean this up before I publish.”

ParameterRequiredWhat it is
textYesThe content to review. Up to 100,000 characters.
goalNoWhat you’re trying to achieve, in plain language. Up to 500 characters.

With no goal, the standard review set runs:

style_agent, brand_voice, terminology, sentence_clarity,
ai_voice_detector, generic_claims, source_authority

With a goal, Markup AI composes the check set for you. Instead of naming agents, describe the outcome—“get this ranking in AI search before launch,” “convince skeptical enterprise buyers,” “make sure legal won’t flag this”—and the server selects and orders the right agents for that goal, on top of the standard set. It also asks the agents that support it to focus their findings on your goal.

A goal only ever adds checks—it never drops one from the standard set. So passing a goal is always at least as thorough as leaving it out. If goal selection is unavailable for any reason, the standard set runs anyway and the response says so in warnings.

markupai_run_agents

Run an explicit, fixed set of agents. Use this when the user names specific checks, or when an integration needs the same agents every time.

ParameterRequiredWhat it is
agentsYes1–20 agent names, e.g. ["brand_voice", "generic_claims"].
textYesThe content to run them against. Up to 100,000 characters.
configNoOverrides for the configuration this run applies (see below).
goalNoFocuses findings within the agents you named. It never changes or reorders your set.

Your organization’s configured profiles and guides apply unless you override them:

config keyWhat it sets
personaThe persona the persona agent reads as—by name or ID.
voice_profileThe brand voice profile brand_voice evaluates against.
style_guideThe style guide style_agent applies.
content_profileThe content profile style_agent uses (e.g. Markdown, HTML, DITA).
domain_idsUp to 20 terminology domains for terminology and ai_voice_detector.

Get valid names and IDs from markupai_capabilities_and_configs.

markupai_review and markupai_run_agents divide the work cleanly: review decides what to check, run_agents does exactly what it’s told. For any general “is this good?” ask, prefer markupai_review—it makes better choices than a hand-picked list, and it explains the choices it made.

markupai_capabilities_and_configs

Pull down everything your organization has configured, in one read-only call with no arguments:

  • agents — name, one-line description, and category for every agent you can run
  • personas — ID, name, and title
  • voice_profiles — ID and name
  • style_guides — ID and name
  • content_profiles — ID and name

It returns a compact catalog—names and one-line descriptions, no JSON schemas. You rarely need it before markupai_review, which applies your configuration automatically; it’s most useful when you’re about to override something in markupai_run_agents.

If your account can’t read a section—personas, say—that section comes back as an empty list plus a warnings entry explaining why, rather than failing the whole call.

Available agents

Every agent below can be named in markupai_run_agents, and any of them can be selected by markupai_review when your goal calls for it. Which ones your organization can actually run depends on your plan and feature access—check with markupai_capabilities_and_configs.

Agent nameCatalog pageCategoryWhat it flags
style_agentStyleBrandYour whole style guide in one pass—passive voice, word choice, consistency, readability. Also returns quality scores when your organization has scoring enabled.
brand_voiceBrand VoiceBrandPassages whose tone or phrasing has drifted from your approved brand voice.
terminologyBrand TermsBrandUnapproved words and phrases, with preferred replacements from your term list.
personaPersonaBrandWhere a defined ICP persona would lose interest, get confused, or stop trusting you.
sentence_claritySentence ClarityContent IntegrityHard-to-read sentences, with clearer rewrites.
ai_voice_detectorAI VoiceContent IntegrityWriting patterns that signal AI generation—clichés, uniform rhythm, repetitive structure.
focus_agentFluffContent IntegrityIndirect, filler, and off-topic sentences that bury your point.
generic_claimsClaimsAccuracyVerifiable claims and promissory language that could create exposure.
date_time_accuracyDate & Time AccuracyAccuracyImpossible dates, weekday mismatches, inverted or contradictory date ranges, bad timezone conversions, and missing timezone or AM/PM information.
link_integrityLink IntegrityAccuracyAnchor/URL mismatches, dead destinations, decayed domains, misattributed citations, and off-topic links.
source_authoritySource AuthorityAI VisibilityContent missing the credibility signals AI models look for when choosing what to cite.
snippet_readinessSnippet ReadinessAI VisibilitySections that don’t stand alone when an AI system extracts them.
answer_authorityQ&A OptimizationAI VisibilityHeadings and answers that don’t lead with the answer.
key_takeawaysKey TakeawaysAI VisibilityA missing key-takeaways summary near the top of the document.
freshnessFreshnessAI VisibilityStale content, outdated references, and missing freshness signals.

What you get back

Both execute tools return the same evidence envelope, so your assistant always knows what actually ran—not just what was found:

{
"checked": {
"agents_run": ["style_agent", "brand_voice", "terminology"],
"selection": "default",
"voice_profile": "Markup AI",
"style_guide": "Technical",
"persona": null,
"characters": 1840
},
"warnings": [],
"results": [
{
"agent": "brand_voice",
"issues": [
{
"agent": "brand_voice",
"severity": "medium",
"confidence": 0.82,
"explanation": "Hedged phrasing undercuts the confident voice.",
"position": { "start": 412, "end": 448, "text": "we think this might help" },
"category": "tone",
"suggestion": "this helps"
}
]
}
],
"duration_seconds": 12.4
}

Worth knowing:

  • checked.selection tells you how the agent set was chosen: default (standard set), goal (composed from your goal), or explicit (you named them).
  • checked.goal appears only when you passed a goal, and shows how it was interpreted—the agents it added and the resulting plan.
  • Configuration evidence is honest. voice_profile, style_guide, and persona are populated only when an agent that consumes them actually ran.
  • warnings are never stripped. An unconfigured voice profile, an agent your plan gates out, or a partial failure shows up here with a code and explanation—so an empty result is never mistaken for a clean bill of health.
  • results has one entry per agent that completed, even when the agent found nothing. Agents that fail appear as agent_failed warnings instead.
  • scores appear inside the style_agent entry when your organization has numeric scoring enabled.

Example prompts

Review before publishing

Review this launch announcement before I publish it: [paste text]

Review with a goal

Review this page with the goal of getting it cited by AI search assistants: [paste text]
Check this landing page copy—my goal is to convince skeptical enterprise buyers: [paste text]

Named checks only

Run just brand voice and claims on this paragraph: [paste text]

Check against a specific persona

Run the persona agent on this post as Casey, our Head of Technical Documentation: [paste text]

See what’s configured

What Markup AI agents, personas, and style guides do we have available?

Per-agent tool names

Some clients and saved configurations reference a tool name per agent. Those names map onto the three-tool surface like this:

Tool nameEquivalent call
markupai_brand_voicemarkupai_run_agents with agents: ["brand_voice"]
markupai_personamarkupai_run_agents with agents: ["persona"]
markupai_sentence_claritymarkupai_run_agents with agents: ["sentence_clarity"]
markupai_ai_voicemarkupai_run_agents with agents: ["ai_voice_detector"]
markupai_brand_termsmarkupai_run_agents with agents: ["terminology"]
markupai_stylemarkupai_run_agents with agents: ["style_agent"]
markupai_claimsmarkupai_run_agents with agents: ["generic_claims"]
markupai_date_time_accuracymarkupai_run_agents with agents: ["date_time_accuracy"]
markupai_link_integritymarkupai_run_agents with agents: ["link_integrity"]
markupai_fluffmarkupai_run_agents with agents: ["focus_agent"]
markupai_freshnessmarkupai_run_agents with agents: ["freshness"]
markupai_key_takeawaysmarkupai_run_agents with agents: ["key_takeaways"]
markupai_q_and_a_optimizationmarkupai_run_agents with agents: ["answer_authority"]
markupai_snippet_readinessmarkupai_run_agents with agents: ["snippet_readiness"]
markupai_source_authoritymarkupai_run_agents with agents: ["source_authority"]
markupai_list_agents, markupai_get_agent, markupai_list_personas, markupai_list_brand_voice_profilesmarkupai_capabilities_and_configs
markupai_execute_agent_syncmarkupai_run_agents, naming the agents
markupai_execute_agent_async, markupai_get_workflow_statusmarkupai_run_agents. Runs are synchronous—see Troubleshooting for long documents.

Two related points:

  • MCP addresses agents by catalog name. Pass an unknown name and the error lists every valid one. The REST API addresses agents by ag_ ID.
  • MCP has no webhook_url parameter. The REST API supports webhooks.

A single markupai_review call covers what a chain of per-agent calls covers, and picks the agents for you. Reach for the mapping above only when you need one specific check.

Troubleshooting

  1. Confirm the server URL is https://api.markup.ai/mcp/.
  2. Make sure you completed authentication—either the OAuth login prompt or an Authorization: Bearer YOUR_API_KEY header.
  3. Completely quit your MCP client (cmd+Q on Mac, not just closing the window) and reopen it.
  4. You should see exactly three tools. If you see a longer list of per-agent tools, your client is serving a cached tool list—reconnect the server.
  1. If using an API key, verify it’s correct (no extra spaces or quotes) and sent as Authorization: Bearer YOUR_API_KEY.
  2. If using OAuth, reconnect/re-authorize the server from your client and complete the browser prompt.
  3. If it still fails with a freshly copied key, confirm your account is active and has API access. The server returns the same 401 for any token problem—missing, malformed, or expired—so it won’t tell you which; re-check these one at a time.

Check the warnings in the response—it will name the agent and the reason. The agents you can run depend on your organization’s plan and feature access, and some require features to be enabled in the console. Run markupai_capabilities_and_configs to see exactly what your account can run.

That’s what the envelope is for. Check checked.agents_run to confirm the agent ran, and checked.voice_profile / checked.style_guide / checked.persona to confirm the configuration it applied. If a profile you expected shows as null, it wasn’t configured—look for the matching warnings entry (e.g. voice_profile_not_configured). A clean result with full evidence really is clean.

Runs are synchronous and bounded by a server-side deadline, so very long documents can time out. text accepts up to 100,000 characters, but for large content split it into sections and review them separately—section-level results are easier to act on anyway. There’s no async mode or polling on MCP; if you need background runs or webhooks, use the REST API.

A goal composes checks up, never down—it can add agents to the standard set but won’t remove any. If you need a narrower run, name the agents explicitly with markupai_run_agents. Also check checked.goal in the response to see how your goal was interpreted, and warnings for any note that goal selection fell back to the standard set.

Tips for Success

Lead with the goal, not the agent list: Tell your assistant what you’re trying to achieve and let markupai_review compose the checks. Naming agents yourself is for when you need determinism, not for everyday review.

Configure once, apply everywhere: Set your brand voice, personas, terminology, and style guide in the console. Every call applies them automatically—no per-request configuration needed.

Read the evidence: The checked block tells you what ran and against which profiles. When a result surprises you, it’s usually the fastest explanation.

Learn More

Ready to transform your writing? Connect the Markup AI MCP server and bring AI-powered content checks into your assistant.