CD

ContentDrips

API Docs

MCP v1.0.0

ContentDrips MCP

Connect Claude, Cursor, ChatGPT, Grok, OpenClaw, and any MCP client to your ContentDrips account. Design carousels and graphics in chat, then draft, schedule, or publish to LinkedIn and Instagram.

Server URL: https://mcp.contentdrips.com/mcp

Connect

The server speaks MCP over streamable HTTP. Every request uses your ContentDrips API key. The key is sent over HTTPS and is not stored on the MCP server.

URL

https://mcp.contentdrips.com/mcp

Header

Authorization: Bearer YOUR_API_KEY

Get an API key

  1. Log in at app.contentdrips.com.
  2. Open Settings → API Tokens.
  3. Create a token and copy it into your MCP client.
Open API tokens

Clients that support OAuth (Claude on the web, ChatGPT) send you to ContentDrips to authorize that same API key. Clients that take a static header (Cursor, Claude Code, OpenClaw, Grok) use the Bearer token directly.

Clients

Claude (claude.ai)

  1. Open Settings → Integrations.
  2. Choose Add Integration.
  3. Enter https://mcp.contentdrips.com/mcp.
  4. Authorize with your ContentDrips API key.

Claude Code

bash
claude mcp add --transport http contentdrips https://mcp.contentdrips.com/mcp \
  --header "Authorization: Bearer YOUR_API_KEY_HERE"

Cursor

Settings → MCP → Add MCP Server. Type HTTP, URL https://mcp.contentdrips.com/mcp, header Authorization: Bearer YOUR_API_KEY.

Or add this to ~/.cursor/mcp.json:

json
{
  "mcpServers": {
    "contentdrips": {
      "type": "http",
      "url": "https://mcp.contentdrips.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY_HERE"
      }
    }
  }
}

OpenClaw

bash
openclaw mcp set contentdrips "{
  \"type\": \"streamable-http\",
  \"url\": \"https://mcp.contentdrips.com/mcp\",
  \"headers\": { \"Authorization\": \"Bearer YOUR_API_KEY_HERE\" }
}"

Grok

Add an MCP server with the same URL and Authorization: Bearer YOUR_API_KEY header.

Any other MCP client

Use streamable HTTP at https://mcp.contentdrips.com/mcp with the Bearer header. OAuth 2.0 authorization-code with PKCE is also available for clients that discover the server automatically. The consent screen is on ContentDrips, where you paste your API key.

How creation works

A template, design, graphic, carousel, and infographic are the same canvas. The agent picks a path from whether you named one.

You sayWhat happens
No template ID or nameAI Design Agent builds a new layout in your brand style, then returns an editor link. It does not export a file unless you ask.
A template ID or nameThe AI maker keeps that layout and fills it from a topic, blog, YouTube video, or TikTok/Reel URL.
A small editFont size, color, image URL, or a short text change is saved in place. The layout stays.
“Recreate this”Attach a reference image. Design Agent copies the structure and applies your saved style.
  • If you have more than one workspace, say which one. Every create, generate, render, schedule, and publish call needs that profile_id.
  • If you have more than one saved style, the agent asks which to use. It does not pick one for you.
  • Name LinkedIn, Instagram, or both. A connected account is not added on its own.
  • Publish waits for a yes that names the platforms.
  • Editor links look like https://app.contentdrips.com/canvas?template={id}.

Example prompts

Create a 5-slide LinkedIn carousel on "how to price freelance work". Use my brand style. Don't publish yet — just give me the editor link.
Turn this blog into an Instagram carousel and keep my template layout: https://example.com/10-tips-for-creators. Template ID 5821. Draft a caption. Publish to Instagram only after I confirm.
Design a square quote graphic: "Ship weekly, not perfectly." Warm terracotta, serif headline, include my branding.
Use my Blue Corporate template. Turn this YouTube video into a LinkedIn carousel and schedule it for Tuesday 9am New York. LinkedIn only.
Make the headings on template 5821 a bit bigger, then send me the editor link.

Tools

29 tools. You talk to the assistant in plain language. These are the calls it can make on your account.

Designs

Find templates, inspect fields, create a blank canvas, or delete a design.

List template categories

Read

get_template_categories

List public template categories such as carousel, quote, and LinkedIn topics. Use this before browsing by category.

No input parameters.

Search public templates

Read

search_templates

Browse or search public templates when you ask to show, find, or pick one. This does not silently choose a template for you.

ParameterTypeDescription
querystringKeyword, for example "motivational" or "sale".
categorystringBuilt-in slug (carousel, quote, tweet_style, placard, evergreen, libanners) or a topic name from get_template_categories.
typestringDeprecated alias for category.

List my designs

Read

get_my_templates

List saved designs in your account. Optionally filter by type or workspace.

ParameterTypeDescription
typestringFilter such as carousel, quote, or graphic.
profile_idstringWorkspace ID from get_profiles.

Get template details

Read

get_template

Look up one design by ID or name. Searches your designs first, then public templates. Returns size, type, and an editor link.

ParameterTypeDescription
template_idstringNumeric template ID, for example 163191.
template_namestringFull or partial name. Provide an ID or a name.

Get template structure

Read

get_template_structure

Inspect editable field labels, types, and current font size and color. Required before filling or surgically editing a template.

ParameterTypeDescription
template_idRequiredstringTemplate ID to inspect.

Create blank design

Write

create_graphic

Create a blank design in a workspace. This is the first step when you did not name an existing template. Always pass profile_id.

ParameterTypeDescription
nameRequiredstringName for the new design.
typeRequiredcarousel | graphic | quote | quote_newcarousel is multi-slide, graphic is a single image, quote is a quote card.
formatsquare | portrait | tiktok | landscape | customPreset size. Use custom with width and height.
widthnumberWidth in px (100–3000). Required with height for a custom size.
heightnumberHeight in px (100–3000). Required with width for a custom size.
slidesnumberSlide count for carousels. Default is 3.
profile_idRequiredstringWorkspace ID from get_profiles.

Delete design

Destructive

delete_graphic

Permanently delete a design, including its canvas file and thumbnail. Confirm before calling this.

ParameterTypeDescription
template_idRequiredstringID of the design to delete.

AI generation

New layouts, fill-in-place generation, manual JSON, surgical edits, and PNG/PDF export.

List brand styles

Read

get_brand_styles

List saved visual styles for a workspace and whether the Pro model is available. Call this before the AI Design Agent. If you have more than one style, the agent should ask which to use.

ParameterTypeDescription
profile_idstringWorkspace ID. Use the same one you will pass to create_graphic and run_ai_design_agent.

Run AI Design Agent

Write

run_ai_design_agent

Build a new layout with AI. Use this when you did not name an existing template, or when you explicitly ask to recreate a design (including from a reference image). Share the editor link when it finishes. Export only if you ask to preview, download, or publish.

ParameterTypeDescription
template_idRequiredstringDesign to run the agent on. Create one first with create_graphic.
promptRequiredstringWhat to design or change: topic, style, colors, copy, and tone.
use_brandingbooleanInclude profile name, handle, brand colors, and fonts. Default false.
style_idstringSaved style ID from get_brand_styles. Omit for no saved style.
modelbasic | proModel tier. basic is the default. pro is only on eligible plans.
reference_imagestringhttps URL or data:image/...;base64,... URI when you attach a picture to recreate.

Generate AI graphic

Write

generate_ai_graphic

Fill an existing graphic, quote, or infographic while keeping its layout. Same inputs as the AI carousel maker.

ParameterTypeDescription
template_idRequiredstringExisting non-carousel template ID.
methodRequiredtopic | blog | youtube | tiktok_reelHow the source content is provided.
inputRequiredstringTopic text or content URL.
profile_idRequiredstringWorkspace ID for that template.
outputpng | pdfExport format. Default png.

Fill graphic from JSON

Write

generate_graphic

Write a content_update array from get_template_structure, then render. Field labels must match the template.

ParameterTypeDescription
template_idRequiredstringExisting graphic or quote template ID.
content_updateRequiredarrayField patches. See the JSON shape below.
profile_idRequiredstringWorkspace ID for that template.
brandingobjectOptional { name, bio, handle, website_url, avatar_image_url }.
outputpng | pdfExport format. Default png.

Edit and save template

Write

edit_template

Change font size, color, an image URL, or a short text string on an existing design and save it. This keeps every object. It does not redesign the layout. Share the editor link when the job finishes.

ParameterTypeDescription
template_idRequiredstringExisting template ID.
profile_idRequiredstringWorkspace ID for that template.
content_updatearrayLabeled patches. value is optional for style-only changes. slide can be a 0-based index, intro, or ending.
carousel_contentobjectOptional carousel patches. Does not add or remove slides.
canvas_backgroundobjectSolid background, for example { type: "fill", color: "#0F172A" }.

Export PNG or PDF

Write

render_template

Export a saved design without rewriting content. Use this only when you ask to preview, download, attach images to a post, or publish.

ParameterTypeDescription
template_idRequiredstringDesign ID to export as-is.
profile_idRequiredstringWorkspace ID for that design.
typeRequiredcarousel | graphiccarousel for multi-slide designs, graphic for a single image or quote.
outputpng | pdfExport format. Default png.

Check render job

Read

check_job_status

Poll a render or edit job. When it completes, the result includes export_url or export_urls.

ParameterTypeDescription
job_idRequiredstringJob ID from a generate, edit, or render tool.

carousel_content

Shape used by generate_carousel. Keys inside elements must match labels from get_template_structure. Image elements can use via: "unsplash" with image_query.

json
{
  "carousel_topic": "Optional topic",
  "intro_slide": {
    "elements": {
      "heading": { "type": "text", "value": "Welcome" },
      "description": { "type": "text", "value": "A short intro" },
      "image": { "type": "image", "value": "https://example.com/cover.jpg" }
    }
  },
  "slides": [
    {
      "elements": {
        "heading": { "type": "text", "value": "Feature 1" },
        "image": {
          "type": "image",
          "value": "https://images.unsplash.com/...",
          "via": "unsplash",
          "image_query": "workspace desk"
        }
      }
    }
  ],
  "ending_slide": {
    "elements": {
      "heading": { "type": "text", "value": "Thank you" }
    }
  }
}

content_update

Shape used by generate_graphic and edit_template. For a style-only edit, omit value and send fontSize or fontColor. A slightly larger heading is about the current size × 1.15.

json
[
  {
    "type": "textbox",
    "label": "headline",
    "value": "Flash Sale Alert!",
    "fontSize": "56",
    "fontColor": "#FF6B6B"
  },
  {
    "type": "image",
    "label": "background",
    "value": "https://example.com/new.jpg"
  }
]

Workspaces and accounts

Pick a workspace before you create or publish. Check that LinkedIn or Instagram is connected.

List workspaces

Read

get_profiles

List your ContentDrips workspaces and their IDs. Call this before creating designs, generating, rendering, scheduling, or publishing. If you have more than one workspace, say which one to use.

No input parameters.

List social accounts

Read

get_social_accounts

List connected LinkedIn and Instagram accounts for a workspace. If none are connected, the result includes a connect URL.

ParameterTypeDescription
profile_idRequiredstringWorkspace ID to check.

Posts and images

Draft posts, attach ContentDrips exports or external images, and manage the queue.

List posts

Read

list_posts

List posts, optionally filtered by status.

ParameterTypeDescription
statusdraft | scheduled | published | publishing | failedOmit to list every post.

Get post details

Read

get_post

Get caption, images, status, schedule, errors, and a link to view the post.

ParameterTypeDescription
uuidRequiredstringPost UUID.

Create post

Write

create_post

Create a draft post. Always pass profile_id. Prefer set_post_images afterward when attaching ContentDrips exports.

ParameterTypeDescription
captionRequiredstringPost caption.
profile_idRequiredstringWorkspace ID from get_profiles.
images_urlstring[]Optional image URLs to attach immediately.

Update post

Write

update_post

Change a caption or platform flags. Enable LinkedIn or Instagram only when you asked for that platform.

ParameterTypeDescription
uuidRequiredstringPost UUID.
captionstringNew caption.
linkedin_publishbooleantrue only if you asked to post on LinkedIn.
instagram_publishbooleantrue only if you asked to post on Instagram.

Delete post

Destructive

delete_post

Permanently delete a post.

ParameterTypeDescription
uuidRequiredstringPost UUID to delete.

Set post images

Write

set_post_images

Attach PNG or PDF exports from a ContentDrips render job. Pass export_url values exactly as returned. The server stores the relative path. Nothing is re-uploaded.

ParameterTypeDescription
uuidRequiredstringPost UUID.
export_urlsRequiredstring[]One URL for a single image, or the full array for a carousel.

Upload images to post

Write

upload_images_to_post

Download external images and store them on ContentDrips, then attach them. Use this for images that did not come from a ContentDrips export. Prefer image_urls. Base64 is only for images under about 4 MB.

ParameterTypeDescription
uuidRequiredstringPost UUID.
image_urlsstring[]Public image URLs to download and re-host.
images_base64string[]Base64 images, with or without a data-URI prefix.

Remove post images

Destructive

remove_images_from_post

Remove every image from a post and delete the files from storage.

ParameterTypeDescription
uuidRequiredstringPost UUID.

Publishing

Schedule or publish only on platforms you named. Connect accounts at app.contentdrips.com/social-accounts.

Schedule post

Write

schedule_post

Schedule a post. Both platform flags are required. At least one must be true, and only for platforms you named.

ParameterTypeDescription
uuidRequiredstringPost UUID.
scheduled_timeRequiredstringLocal time in ISO format, for example 2026-03-15T09:00:00.
timezoneRequiredstringIANA timezone, for example America/New_York.
linkedin_publishRequiredbooleantrue only if you asked to schedule on LinkedIn.
instagram_publishRequiredbooleantrue only if you asked to schedule on Instagram.
linkedin_account_idnumberSpecific LinkedIn account. Uses the default if omitted.
instagram_account_idnumberSpecific Instagram account. Uses the default if omitted.

Unschedule post

Write

unschedule_post

Cancel a schedule and move the post back to drafts.

ParameterTypeDescription
uuidRequiredstringPost UUID.

Publish post

Destructive

publish_post

Publish immediately. confirmed must be true only after you explicitly agree, and the agent should name the platforms in that confirmation. Instagram only means instagram_publish true and linkedin_publish false.

ParameterTypeDescription
uuidRequiredstringPost UUID.
confirmedRequiredbooleantrue only after you confirm the publish, including which platforms.
linkedin_publishRequiredbooleantrue only if you asked to publish on LinkedIn.
instagram_publishRequiredbooleantrue only if you asked to publish on Instagram.
linkedin_account_idnumberSpecific LinkedIn account. Uses the default if omitted.
instagram_account_idnumberSpecific Instagram account. Uses the default if omitted.

Formats

formatSizeTypical use
square1080 × 1080Instagram, LinkedIn
portrait1080 × 1350Instagram portrait
tiktok1080 × 1920TikTok, Stories, Reels
landscape1920 × 1080Banners and wide posts
custom100–3000 px each sidePass width and height

Exports are PNG or PDF. A carousel canvas is one frame wide per slide.

AI credits

Credits used by the AI maker tools.

MethodCarouselGraphic
topic108
blog, YouTube, or TikTok reel1210

Privacy

  • Your API key is sent with each request over HTTPS and is not stored on the MCP server.
  • The server is stateless. It does not keep your designs or posts between requests.
  • Generated files stay in your ContentDrips account.
  • Claude on the web and other OAuth clients use an authorization-code flow. You approve access on ContentDrips.

Questions: support@contentdrips.com