Skip to main content
Glama
smythmyke

MarkItUp - AI Image Marketing and Annotation

by smythmyke

markitup-mcp-server

npm version MCP Registry Glama License: MIT

MCP (Model Context Protocol) server for MarkItUp — AI-powered image annotation and marketing-visual generation. Lets Claude Code, Claude Desktop, Cursor, ChatGPT-with-MCP, and other MCP-compatible clients call MarkItUp directly.

Five tools available: markitup_credit_balance, markitup_generate, markitup_regen, markitup_extend, markitup_remove_background.

Prerequisites

  1. A MarkItUp account — sign up at https://markitup.app.

  2. A MarkItUp API key — generate one at https://markitup.app/dashboard.

  3. Node.js 18 or newer (only if installing locally; npx doesn't require a local Node.js if your MCP client bundles one).

Related MCP server: jgkme/kilo-image-gen-mcp

Configure in Claude Code

Add to your MCP config (~/.claude/mcp.json or project-scoped .mcp.json):

{
  "mcpServers": {
    "markitup": {
      "command": "npx",
      "args": ["-y", "markitup-mcp-server"],
      "env": {
        "MARKITUP_API_KEY": "mk_live_..."
      }
    }
  }
}

Configure in Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "markitup": {
      "command": "npx",
      "args": ["-y", "markitup-mcp-server"],
      "env": {
        "MARKITUP_API_KEY": "mk_live_..."
      }
    }
  }
}

Configure in Cursor

Cursor uses the same JSON shape. Settings → MCP → Add Server:

{
  "mcpServers": {
    "markitup": {
      "command": "npx",
      "args": ["-y", "markitup-mcp-server"],
      "env": { "MARKITUP_API_KEY": "mk_live_..." }
    }
  }
}

Tools

markitup_credit_balance

Returns the current credit balance and subscription status.

No arguments. Use it to verify your API key works and to check credits before calling generation tools.

markitup_generate

Generates 3 polished marketing-visual variations from a screenshot. Costs 1 credit.

Argument

Type

Required

Description

description

string

yes

What the image shows and what to highlight

template_id

string

yes

One of glassmorphic, clean_minimal, bold_marketing, dark_professional, documentation (and more)

image_url

string

one-of

Public HTTPS URL of the source image

image_base64

string

one-of

Base64-encoded image bytes (no data: prefix)

image_mime_type

string

no

MIME type when supplying image_base64. Default: image/png

aspect_ratio

string

no

One of 1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9

image_size

string

no

1K, 2K, or 4K

Returns: the marketing copy (headline, sub-headline) plus 3 generated image variations as base64 image content blocks. The full structured response is also available under structuredContent.

Example prompt (in Claude Code):

Use markitup_generate with the screenshot at https://example.com/dashboard.png — highlight the export button and pitch it for a marketing landing page using the bold_marketing template.

markitup_regen

Regenerate one variation from a previous markitup_generate call. Costs 1 credit by default (charge_credit: false to skip).

The LLM must pass back the text_analysis object from the previous generate's structuredContent.text so the regenerated visual stays on-brand with the same headline / sub-headline. variation_index selects which slot (0–2).

markitup_extend

AI outpaint — extend an image to a larger canvas / different aspect ratio. Costs 1 credit.

Argument

Type

Required

Description

image_url / image_base64

string

one-of

Source image

aspect_ratio

string

yes

Target ratio (16:9, 9:16, etc.)

target_width / target_height

number

yes

Output pixel dimensions

image_size

string

no

1K, 2K, or 4K

markitup_remove_background

Remove the background from an image via Photoroom's HD model. Returns a transparent PNG. Costs 1 credit (free for active Pro/Power subscribers).

Argument

Type

Required

Description

image_url / image_base64

string

one-of

Source image

Environment variables

Var

Required

Description

MARKITUP_API_KEY

yes

API key from your MarkItUp dashboard

MARKITUP_API_BASE

no

Override the API base URL. Default: https://markitup.app/api/v1. Useful for testing against staging.

Local development

git clone https://github.com/markitup/mcp-server.git
cd mcp-server
npm install
npm run build

# Point your MCP client config at the local build:
{
  "command": "node",
  "args": ["/absolute/path/to/mcp-server/dist/index.js"],
  "env": { "MARKITUP_API_KEY": "mk_test_..." }
}

Security

  • Never commit MARKITUP_API_KEY to source control.

  • If you accidentally expose a key, revoke it immediately at https://markitup.app/dashboard and create a new one.

  • Keys are SHA-256 hashed on the server; the raw key is shown only once at creation.

Errors

The server surfaces clean human-readable errors for the common cases:

  • Invalid or missing MARKITUP_API_KEY — set or rotate the key.

  • Out of MarkItUp credits — top up at https://markitup.app/credits.

  • Rate limit exceeded — wait briefly and retry.

License

MIT

Available Tools

5 tools
markitup_credit_balanceA

Return the current MarkItUp credit balance and subscription status for the authenticated account. Use this before calling generation tools to verify the account has credits available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It correctly implies a safe, read-only operation without causing side effects, which is adequate for a simple balance check.

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?

Two concise, front-loaded sentences with no wasted words. Every sentence adds value: purpose first, usage guidance second.

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

Completeness3/5

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

While adequate for the tool's simplicity, it lacks details about the return structure (e.g., whether balance is an object or just a number). With no output schema, more specificity would improve completeness.

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?

No parameters exist (0 params, 100% schema coverage). Description adds value by explaining what the tool returns, fulfilling the baseline expectation for zero-parameter tools.

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?

The description explicitly states it returns 'current MarkItUp credit balance and subscription status for the authenticated account', clearly distinguishing it from sibling generation tools.

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

Usage Guidelines4/5

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

It gives explicit guidance: 'Use this before calling generation tools to verify the account has credits available.' No explicit when-not, but context is clear.

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

markitup_extendA

AI-outpaint an image to a larger canvas. Useful for converting a square asset to 16:9 or 9:16, or extending a tight crop. Costs 1 credit. Provide the source image as URL or base64, plus the target aspect ratio and pixel dimensions.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_urlNoPublic HTTPS URL of the source image.
image_base64NoBase64-encoded source image (no data: prefix). Mutually exclusive with image_url.
image_mime_typeNoimage/png
aspect_ratioYesTarget aspect ratio. One of: 1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9.
target_widthYesTarget output width in pixels.
target_heightYesTarget output height in pixels.
image_sizeNo

TDQS

A3.9/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It mentions the credit cost but does not disclose other behavioral traits such as output format, synchronous/asynchronous behavior, error conditions, or whether the operation is reversible. The description provides minimal behavioral context beyond the basic action.

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?

The description is extremely concise with two sentences that front-load the purpose and immediately follow with usage context and parameters. No redundant or unnecessary information is present.

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

Completeness3/5

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

Given the complexity (7 parameters, no output schema, no annotations), the description covers the essential purpose and usage but lacks details on output format, direction of extension, or error handling. It is adequate for a basic understanding but not fully comprehensive.

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?

The schema has 71% description coverage, so the description's added value is limited. It reiterates that parameters include source image (URL or base64) and target dimensions, but does not explain the 'image_size' enum or add semantics beyond what the schema already provides. This meets the baseline for moderate coverage.

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?

The description clearly states the tool's purpose: 'AI-outpaint an image to a larger canvas.' It provides specific use cases like converting a square asset to different aspect ratios, which distinguishes it from sibling tools that generate, regenerate, or remove backgrounds.

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

Usage Guidelines4/5

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

The description gives explicit use cases ('converting a square asset to 16:9 or 9:16, or extending a tight crop') and mentions cost ('Costs 1 credit'). However, it lacks explicit comparison to alternatives or when not to use it, though the context from sibling names implies differentiation.

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

markitup_generateA

Generate polished marketing-visual variations of a screenshot or image using the MarkItUp pipeline (Claude analyzes the image and writes copy; Gemini renders the visuals). Costs 1 credit. Provide the image either as a public URL (image_url) OR as a base64-encoded string (image_base64) — exactly one. Common template IDs: glassmorphic, clean_minimal, bold_marketing, dark_professional, documentation. Returns the generated images plus the marketing copy (headline, subhead) written by Claude.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_urlNoPublic HTTPS URL of the source image. Mutually exclusive with image_base64.
image_base64NoBase64-encoded image bytes (no data: prefix). Mutually exclusive with image_url.
image_mime_typeNoMIME type when supplying image_base64. Defaults to image/png.image/png
descriptionYesNatural-language description of what the image shows and what should be highlighted or emphasized.
template_idYesTemplate ID controlling visual style. Standard options: glassmorphic, clean_minimal, bold_marketing, dark_professional, documentation.
aspect_ratioNoOptional. One of: 1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9.
image_sizeNoOptional output resolution tier. Defaults to backend choice.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description covers cost (1 credit), the multi-model pipeline (Claude + Gemini), and return value (images + copy), providing adequate behavioral context.

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?

Description is only 3 sentences, each serving a purpose: purpose/pipeline, cost/input constraint, template IDs/output. Perfectly front-loaded.

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?

Given 7 parameters and no output schema, the description covers necessary context: input methods, cost, style options, and what is returned. No gaps.

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%, but the description adds value by clarifying the mutual exclusivity of image_url/image_base64 and listing example template_ids beyond schema defaults.

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?

The description clearly states the tool generates polished marketing-visual variations using a specific pipeline, distinguishing it from siblings like markitup_extend or markitup_remove_background.

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

Usage Guidelines4/5

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

The description explicitly says to provide either image_url or image_base64 (exactly one) and lists common template IDs, but lacks explicit when-not-to-use guidance or comparisons to siblings.

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

markitup_regenA

Regenerate a single variation from a previous markitup_generate call with the same source image and template. Costs 1 credit if charge_credit=true. Pass back the source image (as URL or base64) AND the text analysis object returned in the previous generate's structuredContent.text — the regen uses the same headline/copy so visuals stay consistent. Use variation_index to choose which slot (0–2) to regenerate.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_image_urlNoPublic HTTPS URL of the same source image used in the original markitup_generate.
source_image_base64NoBase64-encoded source image (no data: prefix). Mutually exclusive with source_image_url.
source_image_mime_typeNoMIME type when supplying source_image_base64. Defaults to image/png.image/png
template_idYesSame template_id used in the original generate.
text_analysisYesThe 'text' object from the previous generate's structuredContent — includes headline, subHeadline, marketingCopy.
variation_indexNoWhich slot (0, 1, or 2) to regenerate. Default 0.
aspect_ratioNo
image_sizeNo
charge_creditNoIf true, deduct 1 credit. Defaults to true.

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description discloses important behaviors: credit cost (if charge_credit=true), the need to reuse previous text_analysis to maintain visual consistency, and the use of variation_index to select a slot. This goes beyond simple purpose.

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?

The description is front-loaded with the main purpose and logically organized. Each sentence adds distinct value (prerequisite, cost, required arguments, slot selection). No redundant or irrelevant information.

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?

Despite no output schema, the description covers key usage aspects: required inputs from previous call, variation selection, credit cost. It does not explain the return format, but the regeneration context is adequately described for an agent to infer the output.

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 78%, and the description adds context by explaining the relationship between text_analysis and the previous generate's structuredContent.text, and clarifying variation_index as a slot. This provides meaning beyond the schema definitions.

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?

The description uses the specific verb 'Regenerate' and clearly identifies the resource as 'a single variation from a previous markitup_generate call'. It distinguishes from sibling tools (e.g., markitup_generate) by referencing the prerequisite generation call.

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

Usage Guidelines4/5

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

The description provides instructions on when to use the tool (after a markitup_generate call) and how to pass required data (source image, text_analysis object, variation_index). It also mentions credit cost. Missing explicit when-not-to-use scenarios, but context is clear.

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

markitup_remove_backgroundA

Remove the background from an image using Photoroom's HD AI background-removal service. Returns a transparent PNG. Costs 1 credit (free for active Pro/Power subscribers). Provide the source image as URL or base64.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_urlNoPublic HTTPS URL of the source image.
image_base64NoBase64-encoded source image (no data: prefix). Mutually exclusive with image_url.
image_mime_typeNoimage/png

TDQS

A4.3/5.0
Behavior4/5

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

Discloses output is transparent PNG, cost of 1 credit, free for Pro/Power subscribers. No annotations provided, so description carries burden; it covers key behaviors but omits error handling or rate limits.

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?

Two sentences, front-loaded with purpose, then cost and input format. No wasted words.

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?

For a medium-complexity tool, description covers purpose, input, output, and cost. No output schema, but output described as transparent PNG. Enough for agent to decide.

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 has 67% description coverage. Description adds context that image_url and image_base64 are mutually exclusive and mentions mime_type default. Adds some value, but schema already covers basics.

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?

The description clearly states it removes background from an image using Photoroom HD AI, returns transparent PNG. Distinct from siblings (credit_balance, extend, generate, regen) which are unrelated.

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

Usage Guidelines4/5

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

Specifies input format (URL or base64) and credit cost. Implicitly suggests usage for background removal, but no explicit when-to-use or alternatives among siblings.

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

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: checking credits, extending canvas, generating marketing variations, regenerating a specific variation, and removing background. There is no ambiguity between them.

Naming Consistency4/5

All tools share the 'markitup_' prefix and use snake_case, but 'credit_balance' is a noun phrase while others are verb phrases (extend, generate, regen, remove_background). This minor inconsistency prevents a perfect score.

Tool Count4/5

With 5 tools covering core image generation and editing needs, the count is reasonable for a specialized marketing tool. Slightly more tools could be added (e.g., template listing), but it's well-scoped.

Completeness4/5

The tool surface covers the primary workflow: credit check, generate, regenerate, extend, and background removal. A minor gap is the lack of a tool to list available templates or manage credits, but the core pipeline is complete.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/smythmyke/markitup-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server