Emelyn

Navigation

Let an AI client prepare the campaign. Keep creation visible.

Expose a narrow Emelyn tool with a clear schema, workspace-level access, structured results, and a confirmation step before anything is created.

MCP tool inspector showing protocol 2026-07-28, tools list, campaign preview input schema, structured result, input error, permission scope, and confirmation

One read-only preview tool is a better first connection than a publishing superuser.

Your AI client can inspect the tool, validate a source, and return a campaign preview. Creating or publishing remains a separate, visible decision.

Discover

Call server/discover or tools/list to see the current protocol, capability, schema, and cache lifetime.

Preview

Call create_campaign_preview with one workspace, one approved source URL, and explicit channels.

Confirm

Show the inputs and resulting drafts. A person can confirm or reject the campaign creation.

Publish elsewhere

Publishing permissions are not bundled into this preview scope. Use the normal Emelyn approval workflow.

The schema says what the model may ask for.

List the tool first, validate every argument on the server, and return a structured preview. Do not rely on the model to remember a hidden workspace or an earlier connection.

tools/list entry

{
  "name": "create_campaign_preview",
  "description": "Preview a campaign from an approved source URL.",
  "inputSchema": {
    "type": "object",
    "required": ["workspace_id", "source_url", "channels"],
    "properties": {
      "workspace_id": { "type": "string" },
      "source_url": { "type": "string", "format": "uri" },
      "channels": {
        "type": "array",
        "items": { "enum": ["linkedin", "instagram", "threads", "x"] }
      },
      "review_required": { "const": true }
    }
  }
}

tools/call request

POST /mcp
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: create_campaign_preview
Authorization: Bearer <access-token>

{
  "jsonrpc": "2.0",
  "id": "campaign-01",
  "method": "tools/call",
  "params": {
    "name": "create_campaign_preview",
    "arguments": {
      "workspace_id": "wk_7f9a2c3b",
      "source_url": "https://example.com/release",
      "channels": ["linkedin", "threads"],
      "review_required": true
    }
  }
}

MCP connector revision 1.0 · Protocol 2026-07-28 · Last tested 29 August 2026.

The result should be useful to a person and usable by the client.

Plain text explains the result. structuredContent carries the preview ID, source, channels, and draft summaries against a declared output schema.

Input or resultUseCheck
workspace_idPermission boundaryThe token must be allowed to access this exact workspace.
source_urlCampaign evidenceEmelyn fetches the approved page and keeps its URL attached.
channelsDraft targetsOnly these channel formats appear in the preview.
review_requiredCreation controlFixed to true for this tool.
result.structuredContent.preview_idStable previewLets the client show or confirm the same result.

Fixable tool error

isError: true explains an invalid URL, unavailable source, or unsupported channel so the client can correct the input.

Protocol error

Unknown tools, malformed JSON-RPC, and unsupported protocol versions return protocol errors. Repeating the same request will not help.

The token narrows access. The interface keeps the person in control.

Use HTTPS and OAuth for remote clients, bind the token to the Emelyn MCP resource, and request the smallest scope needed for the tool being called.

  1. 01

    Authorize

    Grant campaigns:preview for one user and allowed workspaces.

  2. 02

    Show inputs

    Display source URL, workspace, channels, and the tool name before the call.

  3. 03

    Review output

    Show the draft preview and the evidence it came from.

  4. 04

    Confirm

    Create only after an explicit choice. Publishing is still governed in Emelyn.

No token passthroughThe Emelyn token is accepted only by the Emelyn MCP server, never forwarded to another API.

Inputs are untrustedURLs, channel names, and IDs are validated server-side and checked against the caller’s access.

Operational limitsCalls have timeouts, per-user rate limits, audit records, and bounded response sizes. A timeout may be retried with the same request ID.

Current protocol behavior, shown rather than hidden.

The page uses the current sessionless request model, separates tool execution errors from protocol errors, and follows the MCP guidance for access control, rate limiting, input validation, audit logs, and human confirmation.

Give the client enough access to help—not enough to surprise you.

Connect an MCP client