MCP / AI agent integration

Inkie exposes a Model Context Protocol (MCP) server so AI agents - Claude, Cursor, Windsurf, and others - can create and schedule content directly.

Endpoint

https://app.inkie.ink/api/mcp

This is a Streamable HTTP MCP endpoint (MCP spec 2025-03-26). A legacy SSE endpoint is still available at /api/mcp/sse for clients that haven't migrated yet.

Tool discovery: https://app.inkie.ink/.well-known/mcp/manifest

Authentication

Inkie's MCP server speaks OAuth 2.1. Most modern clients (Claude Desktop, Claude Code, Cursor) handle this automatically - on first connect they pop a browser window, you sign in to Inkie, and the client stores the token from there on. You don't need to set an Authorization header by hand.

If your client doesn't speak OAuth yet, fall back to an API key: get one from Settings → API keys and pass it as a Bearer token:

Authorization: Bearer YOUR_API_KEY

Set up in Claude Desktop

Add this to your Claude Desktop config (claude_desktop_config.json) - just the URL, no headers:

{
  "mcpServers": {
    "inkie": {
      "url": "https://app.inkie.ink/api/mcp"
    }
  }
}

Restart Claude Desktop. The first time you ask Claude to use Inkie, a browser window opens for sign-in; after that, the client remembers you.

Set up in Claude Code

claude mcp add inkie \
  --transport http \
  --url https://app.inkie.ink/api/mcp

Claude Code triggers the OAuth flow on first use - sign in once and it's wired.

Set up in Cursor

In Cursor settings → MCP, add a new server:

  • Name: Inkie
  • Transport: HTTP
  • URL: https://app.inkie.ink/api/mcp

No header to set - Cursor will negotiate OAuth on first request.

Available tools

ToolWhat it does
create_social_postSchedule a social post with complete content
generate_social_postGenerate a social post with AI from a brief
get_postRetrieve a social post's details
get_post_statusPoll generation progress
update_social_postUpdate the caption, short-form caption or target platforms on an existing social post (or a blog's promo post)
create_blog_postSchedule a blog post with complete content
generate_blog_postGenerate a blog post with AI from a topic
get_blogRetrieve a blog post's details
get_blog_statusPoll generation progress
update_blogUpdate an existing blog post's title, body, meta description, slug or published status
delete_blogPermanently delete an unpublished blog post and its content-plan item. Refuses already-published blogs
get_content_planGet the content plan for a given month
get_platformsList enabled publishing platforms
attach_video_assetAttach an already-uploaded, ready video to a content item, replacing any existing image or video
update_imageReplace the image on an existing content item (blog or social post) with a new image from a public URL
delete_itemPermanently delete a content-plan item of any type (social post, carousel or blog). Refuses published items
reschedule_itemMove a content item to a new scheduled date, including across months, if it's not yet published
list_onboarding_docsList all onboarding documents for the client, with completion status
get_onboarding_docGet an onboarding document's content by reference ID
update_onboarding_docUpdate or create an onboarding document's content
get_onboarding_promptGet the AI prompt used to guide an onboarding conversation for a given document

Attaching a video

attach_video_asset is the one genuinely multi-step tool. A video is uploaded and processed separately, then attached to an existing content item. The full flow is three calls:

  1. Upload the video with POST /api/video-upload-url. It returns a clientImageId.
  2. Poll the same route's GET (passing the clientImageId as ?assetId) until it reports the video as ready. A still-processing video is rejected.
  3. Call attach_video_asset with { contentItemId, clientImageId }. The contentItemId is the same id that get_blog and get_post return.

Example prompt

Once connected, you can instruct your AI agent naturally:

"Schedule a LinkedIn post for next Tuesday at 9am: 'Three things we learned shipping our first AI-powered feature. Thread below.' Use the Inkie MCP tool."

Discovery manifest

The manifest at /.well-known/mcp/manifest lists all tools and their schemas. Most MCP clients auto-discover tools from this endpoint, so you shouldn't need to configure individual tools manually.

See also