SwayCue
Built for AI agents

Give your coding agent control of SwayCue

Connect the hosted MCP endpoint once, then let Codex, Claude, Cursor, or another MCP client inspect campaigns, schedule Zernio-backed automations, check delivery health, and manage Instagram workflows.

Open agent-readable guide

Share this URL with an agent

https://app.swaycue.com/docs/mcp/agent.md

Authenticated remote server

The guide tells the agent how to connect. The transport endpoint is https://app.swaycue.com/api/mcp and requires a revocable token.

01 — Install

Create a revocable access token

Sign in to SwayCue, open Settings, and create a named token under Remote MCP access. The token is bound to your user and workspace and is displayed only once.

A SwayCue account with workspace access
An MCP client with Streamable HTTP support
A named access token created in SwayCue Settings
A client environment or secret store for the token

Remote endpoint

https://app.swaycue.com/api/mcp

Store the one-time token as OPENREPLY_MCP_TOKEN in your MCP client environment. Never commit it.

02 — Configure

Connect with bearer authentication

The access token determines the user, workspace, and role automatically. No database credentials, user IDs, repository checkout, or local server process are required.

Codex

~/.codex/config.toml or a trusted project config

[mcp_servers.openreply]
url = "https://app.swaycue.com/api/mcp"
bearer_token_env_var = "OPENREPLY_MCP_TOKEN"
startup_timeout_sec = 30
tool_timeout_sec = 120

Claude, Cursor, and JSON clients

Use the MCP settings file supported by the client

{
  "mcpServers": {
    "openreply": {
      "url": "https://app.swaycue.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${OPENREPLY_MCP_TOKEN}"
      }
    }
  }
}

Restart the MCP client after saving. In Codex, run codex mcp list or use /mcp to inspect the connection.

03 — Verify

Teach the agent a safe operating sequence

A successful MCP connection is not enough. The agent should verify infrastructure, account identity, and current campaign state before it changes anything live.

  1. 1

    Check the system

    Call openreply_health and require database, Redis, queue, and worker checks to pass.

  2. 2

    Confirm the account

    Call openreply_list_instagram_accounts before creating or changing a campaign.

  3. 3

    Read before writing

    Inspect the relevant campaign or scheduled post, then present the intended change.

  4. 4

    Confirm live actions

    Supply confirm: true only after the user authorizes an external, destructive, or live automation action.

04 — Tool directory

What an agent can do

The running server advertises authoritative input schemas for every tool. Agents should inspect those schemas instead of inventing arguments.

Health and reporting

Check infrastructure, dashboards, analytics, logs, and operational events.

  • openreply_health
  • openreply_dashboard_summary
  • openreply_dashboard_stats
  • openreply_get_campaign_analytics
  • openreply_list_dm_logs
  • openreply_list_webhook_events
  • openreply_list_operational_events

Instagram accounts and media

Connect accounts, inspect posts and insights, and manage webhook subscriptions.

  • openreply_list_instagram_accounts
  • openreply_get_instagram_connect_url
  • openreply_get_instagram_account
  • openreply_list_instagram_posts
  • openreply_get_media_insights
  • openreply_get_follower_history
  • openreply_subscribe_instagram_webhooks
  • openreply_disconnect_instagram_account

Campaigns

Create, review, import, update, and remove comment-to-DM automations.

  • openreply_list_campaign_templates
  • openreply_list_campaigns
  • openreply_get_campaign
  • openreply_create_campaign
  • openreply_import_campaigns
  • openreply_update_campaign
  • openreply_delete_campaign

Zernio scheduled posts

Find future posts and attach an automation before Instagram publication.

  • openreply_list_zernio_scheduled_posts
  • openreply_sync_zernio_post

Postiz publishing

Inspect Postiz integrations and schedule a mapped Instagram post from the agentic flow.

  • openreply_list_postiz_integrations
  • openreply_schedule_postiz_post

Inbox and replies

Read conversations and send explicit Instagram replies within Meta's rules.

  • openreply_list_conversations
  • openreply_get_conversation_messages
  • openreply_send_instagram_message
  • openreply_reply_to_comment

Workspace access

Inspect membership, accept invitations, and administer non-owner members.

  • openreply_list_workspace_members
  • openreply_accept_workspace_invitation
  • openreply_invite_workspace_member
  • openreply_update_workspace_member_role
  • openreply_remove_workspace_member

05 — Zernio

Build the automation before the post publishes

The scheduled-post record gives SwayCue a stable target before Instagram has assigned a media ID. Publication later fills that exact ID without changing unrelated campaigns.

  1. 01

    Schedule the Instagram post in Zernio and retain its provider post ID.

  2. 02

    Call openreply_sync_zernio_post with that ID.

  3. 03

    Use the returned scheduledPostId in openreply_create_campaign.

  4. 04

    Review the waiting campaign before the Instagram post exists.

  5. 05

    At publication, the signed webhook binds the exact Instagram media ID. The worker repairs missed events every five minutes.

06 — Postiz

Schedule and automate from one agentic flow

Postiz remains a private publishing sidecar, while SwayCue owns the workspace mapping, scheduled-post record, campaign binding, and reconciliation lifecycle.

  1. 01

    An operator configures the server-only Postiz API key and the Postiz/Meta Instagram credentials.

  2. 02

    In SwayCue Settings → Postiz Publishing, connect Instagram through SwayCue and map the SwayCue Instagram account to its Postiz integration.

  3. 03

    Call openreply_list_postiz_integrations and verify the mapping.

  4. 04

    Call openreply_schedule_postiz_post with the account, content, future timestamp, and optional media URL.

  5. 05

    Use the returned scheduledPostId in openreply_create_campaign when the scheduled post should trigger comment-to-DM automation.

  6. 06

    The worker reconciles Postiz and binds the exact published Instagram media ID after publication.

07 — Security

Revocable, role-aware access

Every request is authenticated to a SwayCue user and workspace. The server applies the same membership roles as the dashboard and adds rate limits and tool-call auditing.

Workspace isolation

Every token is permanently scoped to the workspace that issued it.

Role-aware writes

Campaign and access changes require the token owner to remain an owner or admin.

Explicit confirmation

Live changes, destructive actions, DMs, and public replies require confirm: true.

Revocable credentials

MCP tokens are stored as hashes, shown once, rate-limited, audited, and revocable in Settings.

08 — Troubleshooting

Fast checks when the client does not connect

The endpoint uses standard Streamable HTTP with bearer authentication. Connection failures usually come from a missing, revoked, or stale client token.

curl -i https://app.swaycue.com/api/mcp  -H "Authorization: Bearer $OPENREPLY_MCP_TOKEN"

HTTP 401: create a new token in Settings, update the client secret, and restart the client.

HTTP 429: wait for the Retry-After interval before reconnecting.

Writes rejected: confirm the token owner is still an owner or admin member.

Scheduled posts absent: verify the Zernio connection, exact account mapping, and feature flag on both web and worker.

Worker unhealthy: repair the Railway worker before expecting DMs or publication reconciliation.

Ready to hand off

Give the agent one URL

The raw guide is self-contained. Copy the prompt below into a coding-agent task, then create a one-time token in SwayCue Settings when the agent asks for it.

Read https://app.swaycue.com/docs/mcp/agent.md and connect the remote SwayCue MCP server by following it exactly. The endpoint is https://app.swaycue.com/api/mcp. Ask me to create a revocable MCP token in SwayCue Settings, keep it out of source control and chat logs, and verify the connection with openreply_health before making changes.