MCP — Model Context Protocol

Your agent can write into the CMS, not just about it.

This site runs on EmDash, and every EmDash install exposes an MCP server. That means Claude, Cursor or OpenCode can work directly with the content model: search the archive, draft an article, tag it, attach an image and leave it for review.

MCP endpoint

Active on every EmDash install and compatible with Streamable HTTP. Point your client at this URL:

https://penoai.com/_emdash/api/mcp

Authentication is Bearer token only. A browser session cookie will not work over MCP — issue a Personal Access Token from the dashboard.

What the agent can do

  • Draft articles in the brand voice, with structure and internal links
  • Update and correct existing content without touching the admin UI
  • Search before writing, so the archive never repeats itself
  • Manage categories, tags and featured images
  • Schedule publication and change status when approved
  • Read the schema first, so generated content matches the model

Four steps

Connected in under five minutes.

Step 1

Create an access token

Sign in to the dashboard, open Settings → API Tokens and issue a scoped token for the agent you want to connect.

Step 2

Register the MCP server

Add the endpoint and token to your client config — Claude, Cursor, OpenCode or anything that speaks Streamable HTTP.

Step 3

Give the agent its brief

The agent can search, write, tag, attach media and save drafts. Everything else stays behind your review.

Step 4

Review and publish

Generated content lands as a draft. Your team edits it in the admin, then publishes on your schedule.

Claude / Cursor config

Add this to your MCP client configuration:

{
  "mcpServers": {
    "peno-ai": {
      "type": "http",
      "url": "https://penoai.com/_emdash/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_PERSONAL_ACCESS_TOKEN"
      }
    }
  }
}

OpenCode config

In your project opencode.json or global config:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "peno-ai": {
      "type": "remote",
      "url": "https://penoai.com/_emdash/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_PERSONAL_ACCESS_TOKEN"
      }
    }
  }
}

Content automation

One brief in, one reviewed draft out.

Once connected, ask in plain language. This is the prompt we use internally:

Example prompt

Using the Peno AI MCP tools:

1. Search first — is there already an article about "restaurant voice ordering"?
2. If not, create a new draft titled:
   "How a restaurant voice agent handles 70% of calls without a hold"
3. Set a two-sentence excerpt, the category "Restaurant AI",
   and tags "voice agent" and "operations".
4. Save it as a draft and return the preview link.

Generated content is saved as a draft by convention. Publication is always a human decision — that is what keeps a brand voice from drifting into average.

Tools

What access does the agent get?

A sample of the tools exposed. The full server carries 70+ tools across content, media, taxonomies, menus and settings.

ToolPurpose
content_listList articles and pages, filtered by status, category or locale.
content_getRead a full article or page by slug or ID.
content_createCreate a new article or page as draft or published.
content_updateEdit title, body, excerpt, featured image or publish state.
content_searchFull-text search, so an agent can check for duplicates first.
schema_getRead collections and fields before writing content.
media_uploadUpload an image and attach it to an entry.
taxonomy_assignAssign categories and tags to an entry.

Ready to connect your agent?

Issue a token, register the server and generate your first draft. If you would rather have us wire it into your workflow, we do that too.