Skip to main content
Free beta. The Marky API is free to use while it’s in beta. Paid plans are coming later, and we’ll give you plenty of notice before any charges begin.
Marky runs a Model Context Protocol (MCP) server, so an AI agent can use Marky’s tools natively. Instead of pasting REST instructions into your agent, point it at one URL and it gets list_businesses, get_business, create_post, schedule_post, and the rest as real tools. The MCP server exposes the same operations as the REST API — same auth, same data. Pick whichever fits your stack: MCP for agents, REST for scripts and automation tools.

Endpoint

  • Transport: streamable HTTP
  • Auth: either one, whichever your client supports:
    • Authorization: Bearer mk_live_... (your API key — see Authentication)
    • OAuth sign-in. Clients that only offer a “connect and sign in” flow (ChatGPT, Claude Cowork) get their own token by sending you to a normal Marky login page. Nothing to paste, and no API key to manage.

Or sign in, no key needed

Some clients (claude.ai and Cowork custom connectors, the ChatGPT desktop app, codex mcp login) have no field for a key. Those can sign in instead: point the client at the same URL with no token, and it opens your browser so you can log in to Marky and pick the organization to share. Nothing to copy or paste. Agents connected this way are listed under Organization settings → Connected agents in the dashboard, with a Disconnect button. A disconnected agent loses access within the hour and has to sign in again. Either way you get the same tools and the same data. Keys are handy for scripts and CI; signing in is handy on your own machine.

Connect with Claude Code

One command. Replace mk_live_YOUR_KEY with your key:
Then just ask:
“List my Marky businesses, then generate 5 posts about our spring blend and schedule one each weekday at 9am.”

Connect with the Claude Desktop app

Using the Claude Desktop app (the same app used for Cowork) instead of the command line? You add Marky to its config file.
  1. In the app, open Settings → Developer → Edit Config. That opens claude_desktop_config.json. (On a Mac it lives at ~/Library/Application Support/Claude/claude_desktop_config.json; on Windows at %APPDATA%\Claude\claude_desktop_config.json.)
  2. Paste the block below. If the file already has an mcpServers section, add the marky part inside it. Replace mk_live_YOUR_KEY with your key.
  3. Save, fully quit the app, and open it again so the new server loads.
The Claude Desktop app connects to MCP servers that run on your computer. Marky’s server lives on the web, so the small mcp-remote helper (run by npx) bridges the two. You need Node.js installed for npx to work. The key sits in the env block on purpose, so the space in Bearer mk_live_... is passed as one piece and not split apart.

Connect with ChatGPT or Codex

Both speak MCP and both use the URL above, but they get there differently — the Codex CLI takes a command, while ChatGPT has a connector screen (and a different one on the web than in the desktop app). OpenAI also renames these menus fairly often, so the steps live on one page rather than several: Connect ChatGPT and Codex to Marky

Connect with another MCP client

Most MCP clients (Cursor, custom agents, the MCP SDKs) take a config like this:

What the tools do

The MCP exposes a curated subset of the REST API, not all of it. Agents pick the wrong tool as the list grows, so the surface is kept small deliberately. A few you’ll reach for first: Ask your client for its tool list (codex mcp list, or “what Marky tools do you have?”) to see all of them. Every tool matches the REST operation of the same name in the API Reference, but the reverse does not hold: an operation you find there is not necessarily a tool.
Marky’s own AI generation is not an MCP tool. The assistant writes the caption itself, which is why get_business matters: it hands over the brand voice, colors, and logo to write with. If you want Marky to generate the drafts, use the web app or the generation endpoints in the API Reference.

Sending objects and lists

Some arguments take an object or a list — metadata, restrict_publish_to, platform_overrides, media_ids, media_urls. Send them as real JSON when your client supports it:
Some MCP clients turn nested arguments into text before they send them. Those tools also accept the same value as a JSON string, so this works too:
If a value is neither, you get a 422 that names the field. You will not get a post saved with the field left empty.

Before you start

  • Connect your social accounts first. Connecting an Instagram, Facebook, LinkedIn, etc. account is a one-time step in the dashboard. The tools can see your connected accounts but cannot add new ones.
  • Keep your API key in an environment variable, not in source control.