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/mcpHeader
Authorization: Bearer YOUR_API_KEYGet an API key
- Log in at app.contentdrips.com.
- Open Settings → API Tokens.
- Create a token and copy it into your MCP client.
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)
- Open Settings → Integrations.
- Choose Add Integration.
- Enter
https://mcp.contentdrips.com/mcp. - Authorize with your ContentDrips API key.
Claude Code
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:
{
"mcpServers": {
"contentdrips": {
"type": "http",
"url": "https://mcp.contentdrips.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY_HERE"
}
}
}
}OpenClaw
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 say | What happens |
|---|---|
| No template ID or name | AI 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 name | The AI maker keeps that layout and fills it from a topic, blog, YouTube video, or TikTok/Reel URL. |
| A small edit | Font 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
Readget_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
Readsearch_templates
Browse or search public templates when you ask to show, find, or pick one. This does not silently choose a template for you.
| Parameter | Type | Description |
|---|---|---|
query | string | Keyword, for example "motivational" or "sale". |
category | string | Built-in slug (carousel, quote, tweet_style, placard, evergreen, libanners) or a topic name from get_template_categories. |
type | string | Deprecated alias for category. |
List my designs
Readget_my_templates
List saved designs in your account. Optionally filter by type or workspace.
| Parameter | Type | Description |
|---|---|---|
type | string | Filter such as carousel, quote, or graphic. |
profile_id | string | Workspace ID from get_profiles. |
Get template details
Readget_template
Look up one design by ID or name. Searches your designs first, then public templates. Returns size, type, and an editor link.
| Parameter | Type | Description |
|---|---|---|
template_id | string | Numeric template ID, for example 163191. |
template_name | string | Full or partial name. Provide an ID or a name. |
Get template structure
Readget_template_structure
Inspect editable field labels, types, and current font size and color. Required before filling or surgically editing a template.
| Parameter | Type | Description |
|---|---|---|
template_idRequired | string | Template ID to inspect. |
Create blank design
Writecreate_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.
| Parameter | Type | Description |
|---|---|---|
nameRequired | string | Name for the new design. |
typeRequired | carousel | graphic | quote | quote_new | carousel is multi-slide, graphic is a single image, quote is a quote card. |
format | square | portrait | tiktok | landscape | custom | Preset size. Use custom with width and height. |
width | number | Width in px (100–3000). Required with height for a custom size. |
height | number | Height in px (100–3000). Required with width for a custom size. |
slides | number | Slide count for carousels. Default is 3. |
profile_idRequired | string | Workspace ID from get_profiles. |
Delete design
Destructivedelete_graphic
Permanently delete a design, including its canvas file and thumbnail. Confirm before calling this.
| Parameter | Type | Description |
|---|---|---|
template_idRequired | string | ID of the design to delete. |
AI generation
New layouts, fill-in-place generation, manual JSON, surgical edits, and PNG/PDF export.
List brand styles
Readget_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.
| Parameter | Type | Description |
|---|---|---|
profile_id | string | Workspace ID. Use the same one you will pass to create_graphic and run_ai_design_agent. |
Run AI Design Agent
Writerun_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.
| Parameter | Type | Description |
|---|---|---|
template_idRequired | string | Design to run the agent on. Create one first with create_graphic. |
promptRequired | string | What to design or change: topic, style, colors, copy, and tone. |
use_branding | boolean | Include profile name, handle, brand colors, and fonts. Default false. |
style_id | string | Saved style ID from get_brand_styles. Omit for no saved style. |
model | basic | pro | Model tier. basic is the default. pro is only on eligible plans. |
reference_image | string | https URL or data:image/...;base64,... URI when you attach a picture to recreate. |
Generate AI carousel
Writegenerate_ai_carousel
Fill an existing carousel while keeping its layout. Use a topic, blog URL, YouTube URL, or TikTok/Reel URL. Starts a render job.
| Parameter | Type | Description |
|---|---|---|
template_idRequired | string | Existing carousel template ID. |
methodRequired | topic | blog | youtube | tiktok_reel | How the source content is provided. |
inputRequired | string | Topic text or content URL. |
profile_idRequired | string | Workspace ID for that template. |
output | png | pdf | Export format. Default png. |
Generate AI graphic
Writegenerate_ai_graphic
Fill an existing graphic, quote, or infographic while keeping its layout. Same inputs as the AI carousel maker.
| Parameter | Type | Description |
|---|---|---|
template_idRequired | string | Existing non-carousel template ID. |
methodRequired | topic | blog | youtube | tiktok_reel | How the source content is provided. |
inputRequired | string | Topic text or content URL. |
profile_idRequired | string | Workspace ID for that template. |
output | png | pdf | Export format. Default png. |
Fill carousel from JSON
Writegenerate_carousel
Write carousel_content yourself from get_template_structure, then render. Use this when you want full control over each field instead of the AI maker.
| Parameter | Type | Description |
|---|---|---|
template_idRequired | string | Existing carousel template ID. |
carousel_contentRequired | object | Slides and elements keyed by field labels. See the JSON shape below. |
profile_idRequired | string | Workspace ID for that template. |
branding | object | Optional { name, bio, handle, website_url, avatar_image_url }. |
output | png | pdf | Export format. Default png. |
Fill graphic from JSON
Writegenerate_graphic
Write a content_update array from get_template_structure, then render. Field labels must match the template.
| Parameter | Type | Description |
|---|---|---|
template_idRequired | string | Existing graphic or quote template ID. |
content_updateRequired | array | Field patches. See the JSON shape below. |
profile_idRequired | string | Workspace ID for that template. |
branding | object | Optional { name, bio, handle, website_url, avatar_image_url }. |
output | png | pdf | Export format. Default png. |
Edit and save template
Writeedit_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.
| Parameter | Type | Description |
|---|---|---|
template_idRequired | string | Existing template ID. |
profile_idRequired | string | Workspace ID for that template. |
content_update | array | Labeled patches. value is optional for style-only changes. slide can be a 0-based index, intro, or ending. |
carousel_content | object | Optional carousel patches. Does not add or remove slides. |
canvas_background | object | Solid background, for example { type: "fill", color: "#0F172A" }. |
Export PNG or PDF
Writerender_template
Export a saved design without rewriting content. Use this only when you ask to preview, download, attach images to a post, or publish.
| Parameter | Type | Description |
|---|---|---|
template_idRequired | string | Design ID to export as-is. |
profile_idRequired | string | Workspace ID for that design. |
typeRequired | carousel | graphic | carousel for multi-slide designs, graphic for a single image or quote. |
output | png | pdf | Export format. Default png. |
Check render job
Readcheck_job_status
Poll a render or edit job. When it completes, the result includes export_url or export_urls.
| Parameter | Type | Description |
|---|---|---|
job_idRequired | string | Job 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.
{
"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.
[
{
"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
Readget_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.
Posts and images
Draft posts, attach ContentDrips exports or external images, and manage the queue.
List posts
Readlist_posts
List posts, optionally filtered by status.
| Parameter | Type | Description |
|---|---|---|
status | draft | scheduled | published | publishing | failed | Omit to list every post. |
Get post details
Readget_post
Get caption, images, status, schedule, errors, and a link to view the post.
| Parameter | Type | Description |
|---|---|---|
uuidRequired | string | Post UUID. |
Create post
Writecreate_post
Create a draft post. Always pass profile_id. Prefer set_post_images afterward when attaching ContentDrips exports.
| Parameter | Type | Description |
|---|---|---|
captionRequired | string | Post caption. |
profile_idRequired | string | Workspace ID from get_profiles. |
images_url | string[] | Optional image URLs to attach immediately. |
Update post
Writeupdate_post
Change a caption or platform flags. Enable LinkedIn or Instagram only when you asked for that platform.
| Parameter | Type | Description |
|---|---|---|
uuidRequired | string | Post UUID. |
caption | string | New caption. |
linkedin_publish | boolean | true only if you asked to post on LinkedIn. |
instagram_publish | boolean | true only if you asked to post on Instagram. |
Delete post
Destructivedelete_post
Permanently delete a post.
| Parameter | Type | Description |
|---|---|---|
uuidRequired | string | Post UUID to delete. |
Set post images
Writeset_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.
| Parameter | Type | Description |
|---|---|---|
uuidRequired | string | Post UUID. |
export_urlsRequired | string[] | One URL for a single image, or the full array for a carousel. |
Upload images to post
Writeupload_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.
| Parameter | Type | Description |
|---|---|---|
uuidRequired | string | Post UUID. |
image_urls | string[] | Public image URLs to download and re-host. |
images_base64 | string[] | Base64 images, with or without a data-URI prefix. |
Remove post images
Destructiveremove_images_from_post
Remove every image from a post and delete the files from storage.
| Parameter | Type | Description |
|---|---|---|
uuidRequired | string | Post UUID. |
Publishing
Schedule or publish only on platforms you named. Connect accounts at app.contentdrips.com/social-accounts.
Schedule post
Writeschedule_post
Schedule a post. Both platform flags are required. At least one must be true, and only for platforms you named.
| Parameter | Type | Description |
|---|---|---|
uuidRequired | string | Post UUID. |
scheduled_timeRequired | string | Local time in ISO format, for example 2026-03-15T09:00:00. |
timezoneRequired | string | IANA timezone, for example America/New_York. |
linkedin_publishRequired | boolean | true only if you asked to schedule on LinkedIn. |
instagram_publishRequired | boolean | true only if you asked to schedule on Instagram. |
linkedin_account_id | number | Specific LinkedIn account. Uses the default if omitted. |
instagram_account_id | number | Specific Instagram account. Uses the default if omitted. |
Unschedule post
Writeunschedule_post
Cancel a schedule and move the post back to drafts.
| Parameter | Type | Description |
|---|---|---|
uuidRequired | string | Post UUID. |
Publish post
Destructivepublish_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.
| Parameter | Type | Description |
|---|---|---|
uuidRequired | string | Post UUID. |
confirmedRequired | boolean | true only after you confirm the publish, including which platforms. |
linkedin_publishRequired | boolean | true only if you asked to publish on LinkedIn. |
instagram_publishRequired | boolean | true only if you asked to publish on Instagram. |
linkedin_account_id | number | Specific LinkedIn account. Uses the default if omitted. |
instagram_account_id | number | Specific Instagram account. Uses the default if omitted. |
Formats
| format | Size | Typical use |
|---|---|---|
| square | 1080 × 1080 | Instagram, LinkedIn |
| portrait | 1080 × 1350 | Instagram portrait |
| tiktok | 1080 × 1920 | TikTok, Stories, Reels |
| landscape | 1920 × 1080 | Banners and wide posts |
| custom | 100–3000 px each side | Pass 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.
| Method | Carousel | Graphic |
|---|---|---|
| topic | 10 | 8 |
| blog, YouTube, or TikTok reel | 12 | 10 |
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