Revup

Create, customize, preview and report on promotions in your Revup account.

Hosted MCP Server

npx add-mcp 'https://revup.com/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Revup MCP documentation

Connect your AI assistant to Revup to create surveys, forms, and other promotions, customize them, and explore performance from a conversation.

Server URL

MCPhttps://revup.com/mcp

Revup provides a hosted Model Context Protocol (MCP) server. Use a client that supports remote Streamable HTTP connections and OAuth sign-in.

Get started by connecting your account, checking its capabilities, and asking your assistant to find a promotion.

Creating or editing a promotion can affect its public page immediately. Its schedule controls when entries are accepted. There is no separate publication approval step.

Building a direct integration with API keys? See the API reference.

What can I do in my connected Revup account?

Find my giveaways and show their current schedules.

Connect your assistant

  1. In your assistant’s MCP connection settings, add a remote server named Revup using the server URL above.
  2. Start OAuth sign-in and log in to Revup.
  3. Choose the account you want to connect, review the requested permissions.
  4. Select Connect, return to your assistant, and refresh its tools if needed.

The available connection settings depend on your client. It must support remote MCP and OAuth authorization code with S256 PKCE. Revup API keys are for the REST API; this connection uses OAuth.

You can add Revup manually without a published directory listing. Choose the instructions for ChatGPT, Claude, or Codex below. Your assistant’s plan and organization settings may limit custom connections.

Confirm the connection

Ask the assistant to call get_account_capabilities first. Verify the account before making changes. Available tools depend on your consented scopes, account permissions, and supported operations.

Disconnect

Open Account › Integrations, find MCP Connections, and delete the connection. Reconnect through your assistant to authorize it again.

Name: Revup
URL: https://revup.com/mcp
Transport: Streamable HTTP
Authentication: OAuth

Connect ChatGPT

  1. In ChatGPT, open Settings › Security and login and enable Developer mode. Availability depends on your account and workspace policy.
  2. Open Plugins, select the + button, and enter Revup as the name with a short description.
  3. Under Connection, enter the Revup server URL shown on this page and create the connection. Use OAuth authentication.
  4. Sign in to Revup, choose your account, review permissions, and select Connect.
  5. Start a new conversation and select the Revup connection from the tools menu. Ask which Revup account is connected before making changes.

If Developer mode or connection creation is unavailable, check with your workspace administrator. These steps use a custom connection; they do not require Revup to appear in the public directory.

See OpenAI’s current connection instructions for client availability and interface changes.

Connect Claude

  1. In Claude, open Customize › Connectors, select +, then Add custom connector.
  2. Name the connector Revup and paste the server URL shown on this page. Revup supports automatic OAuth client registration; you do not need to supply a client ID or secret.
  3. Add the connector and start its connection or sign-in flow.
  4. Sign in to Revup, choose your account, review permissions, and select Connect.
  5. In a conversation, use + › Connectors to enable Revup, then ask which Revup account is connected.

For Team and Enterprise workspaces, an organization owner may need to add the connector in organization settings before members can connect their own Revup accounts.

See Claude’s custom connector instructions for current plan and workspace requirements.

Connect Codex

  1. With the Codex CLI installed, run the commands shown here to add Revup and start OAuth sign-in.
  2. In the browser, sign in to Revup, choose your account, review permissions, and select Connect.
  3. Return to Codex and start a fresh session. Ask which Revup account is connected and what it can do.

The requested permissions allow promotion editing and aggregate reporting. offline_access lets Codex refresh the connection. Review these permissions during sign-in.

Use the URL for the Revup environment where your account exists. A staging connection accesses staging accounts and promotions.

See Codex’s MCP instructions for other configuration options.

codex mcp add revup --url https://revup.com/mcp
codex mcp login revup --scopes account:read,promotions:read,promotions:write,analytics:read,offline_access

Permissions & access

Each new connection applies to all promotions in one Revup account, within the permissions you allow. Tools respect your current account membership and role. Existing connections with promotion restrictions retain those restrictions.

ScopeAccess
account:readRead account capabilities and allowed operations.
promotions:readFind promotions, discover settings, inspect images, check operations, validate, and preview.
promotions:writeCreate, edit, and duplicate supported promotions; import supplied images.
analytics:readRead aggregate promotion reports.
offline_accessAllow the client to refresh its connection without signing in for every access token.

For read-only account access, allow the read scopes you need and omit promotions:write. offline_access only controls connection refresh.

Tool labels identify reads, writes, and sensitive writes. Sensitive writes can affect public promotion content or send information outside the connected account. Review the details before approving them in your assistant; approval controls depend on the client.

Creating or duplicating a promotion requires account-wide promotion consent. A connection restricted to particular promotions cannot create new ones.

MCP does not expose participant identities or exports, winner selection, participant messaging, payments, subscriptions, or purchase-entry authoring.

Show the connected account and my permissions.

Which operations can I use for this promotion?

Discover promotions & settings

get_account_capabilities

Read · Sensitive: No

Read the connected account and available capabilities. Takes no arguments.

list_promotions

Read · Sensitive: No

Find accessible promotions. Supports query, limit (1–50, default 20), and a returned cursor for the next page.

get_promotion

Read · Sensitive: No

Read saved details using promotion_id. Request a specific section for content, rules, security, design, fields, prizes, bonus actions, or assets. Use the returned revision when editing.

get_promotion_schema

Read · Sensitive: No

Discover supported settings before writing. Pass the section you want to edit, such as content, fields, colors, assets, or schedule. Use the returned allowed values and catalogs.

{
  "name": "get_promotion_schema",
  "arguments": {
    "section": "content"
  }
}

Create, edit & duplicate

create_promotion

Write · Sensitive: Yes

Create a promotion with name, schedule, and idempotency_key. Optionally provide structured operations discovered from the schema. Creates a promotion with normal public availability; its schedule controls when entries are accepted.

Set type to giveaway, contest, form, instant_win, purchase, or survey. An explicit type is required; sweepstakes and purchase_rewards are accepted aliases. Account capabilities list the currently available types.

If your connector still shows the old giveaway-only tool with no type parameter, add this as the first creation operation. The existing operations input supports it:

[{"section":"content","action":"set","values":{"type":"survey"}}]

Replace survey with the intended available type. If both forms of type selection are sent, they must agree. Missing or conflicting types fail without creating a promotion. This operation applies only during creation; it cannot change an existing promotion's type. Reauthorization alone may not refresh a connector's saved tool definitions.

Surveys start with a question and CAPTCHA, with no email or other contact identifier. Contact fields are optional and can be removed before the first real response; after that, questions are locked. Forms retain their existing identifier requirement. Purchase integration and instant-win allocation require dashboard setup and are not copied by MCP duplication.

Create a customer feedback survey with no email field.

update_promotion

Write · Sensitive: Yes

Apply ordered changes with promotion_id, expected_revision, operations, and idempotency_key. Omitted settings are preserved. Applying a theme replaces all colors. Changes can affect the public page immediately.

duplicate_promotion

Write · Sensitive: Yes

Copy supported configuration with a new name and schedule. Supply the source promotion_id, its expected_revision, and an idempotency_key. Participants, results, integrations, language variants, and sends are not copied. The completed copy has normal public availability under its new schedule.

get_operation_status

Read · Sensitive: No

Duplication runs asynchronously. Poll using the returned job_id before working with the new promotion.

Creation and edits use normal promotion availability. Changes can affect public content immediately; there is no separate draft or publication approval step.

Results and readiness

Create and update accept response_mode: summary (default), minimal, or full. Every successful result includes the saved promotion ID and revision, retry information, created or removed child IDs, and advisory readiness. Summary returns saved changes; full also returns the saved configuration within pagination and response limits.

Design schemas document supported selectors, units, ranges, and responsive behavior. Prefer the color, font, layout, and theme controls. Custom CSS is sanitized and scoped; read the saved value after an update because unsupported declarations can be removed.

Schedules and retries

Use local dates in YYYY-MM-DD HH:MM:00 format with an IANA timezone. Revup includes the full final minute of the end time. Choose dates appropriate to your promotion; the example is illustrative.

Read the latest promotion revision before editing. For a retry after a timeout, keep the same idempotency key and identical arguments. Use a new key for a new operation. If the saved revision changed, read the promotion again and review the changes before retrying.

Successful requests can be replayed for seven days on the same connection, or until that connection expires, whichever comes first. Write responses include retry.expires_at_utc. After that window, the old key is rejected even after cleanup. Retry keys do not carry over when you reconnect: read the current promotion, operation or asset state before submitting another write to avoid repeating a completed action.

{
  "name": "create_promotion",
  "arguments": {
    "type": "giveaway",
    "name": "Autumn giveaway",
    "schedule": {
      "start": "2026-10-01 09:00:00",
      "end": "2026-10-31 17:00:00",
      "timezone": "America/Los_Angeles"
    },
    "idempotency_key": "autumn-giveaway-001"
  }
}

Use your images

list_assets

Read · Sensitive: No

Find ready images in the connected account’s library. Use their stable asset IDs with supported image settings discovered through get_promotion_schema.

import_image

Write · Sensitive: No

Import a user-supplied or client-generated image using a file descriptor containing download_url and file_id, plus an idempotency_key. Optional descriptor fields are mime_type and file_name. A local or sandbox file path is not a downloadable file descriptor. Stores the image in your account library; attaching it to a promotion requires a separate edit.

Supported formats are PNG, JPEG, WebP, and GIF, up to 5 MiB and 40 million pixels. Revup imports supplied images; it does not generate them.

get_asset_status

Read · Sensitive: No

Poll using asset_id until the image has completed processing before attaching it to a promotion. If your client cannot supply a downloadable file, upload through Revup’s account library and use list_assets.

Find ready images in my Revup account library.

Show me the supported image slots for my giveaway
and use the image I select.

Preview & check readiness

validate_promotion

Read · Sensitive: No

Pass promotion_id to inspect saved configuration blockers and warnings. Validation is advisory: it does not repair settings or prevent public access.

render_preview

Read · Sensitive: No

Pass promotion_id and viewport (desktop or mobile) to receive a revision-bound JPEG of the saved promotion. The result identifies the revision actually rendered, viewport dimensions, render time, and any incomplete-resource warnings. It captures the visible viewport, so content farther down the page may not appear.

preview_promotion

Read · Sensitive: No

Pass promotion_id to retrieve the standard preview, public, and share links. The preview shows the latest saved promotion and marks submissions as tests.

Review the saved content, images, rules, dates, and timezone before sharing the public link. Public entries follow the normal schedule and entry rules. Closing your assistant does not pause the promotion.

Check this giveaway for readiness warnings.

Render desktop and mobile previews, show its public link, and confirm
when it will accept entries.

Read performance reports

get_promotion_report

Read · Sensitive: No

Read aggregate metrics with promotion_id and a period containing start and end dates. Optionally add a comparison date range and a breakdown: device, source, campaign, or landing.

Reports include metric definitions, denominators, timezone, filters, and freshness limits. Participant counts, weighted entry chances, and counted completions are different metrics. Reports omit participant identities and raw URL paths.

Ask your assistant to separate observed changes from possible explanations. A conversion change or a comparison between sources does not establish its cause.

{
  "name": "get_promotion_report",
  "arguments": {
    "promotion_id": 123,
    "period": {
      "start": "2026-10-01",
      "end": "2026-10-31"
    },
    "breakdown": "source"
  }
}

Troubleshooting

IssueNext step
Connection unavailableConfirm the server URL and that your client supports remote Streamable HTTP and OAuth. If Revup reports it is unavailable, try again later or contact support.
Missing tools or permission deniedCheck account capabilities, consented scopes, your account role, and promotion restrictions. Reconnect if you need different consent.
Expired or revoked connectionLet the client refresh its token or reconnect through OAuth sign-in.
Revision or state conflictRead the current promotion and reconcile the intended edit before submitting a new operation.
Image or duplicate still processingCheck the relevant status tool. Do not repeatedly start a new import or duplication.
Rate limitedWait before retrying. Avoid rapid polling and preserve the same key and payload when retrying promotion or image writes.

submit_feedback

Write · Sensitive: Yes

Report a Revup bug, confusing behavior, or a missing capability from any connection, including read-only ones. Pass a category (bug, confusing, or missing_capability) and a note of up to 2,000 characters describing what you were trying to do, what happened, and what you expected. Optionally include tool_name, promotion_id, and the request_id returned with a tool error.

Stores your report in Revup and may notify the Revup team through Slack, outside your connected account. The result is a feedback_id; your promotions are unchanged. This write remains available with read-only account consent.

Each call creates a separate report, so do not retry automatically. Each connection can send 10 reports per hour. Do not include tokens, passwords, or personal data.

Tool discovery is the reference for the server version your client is connected to. Refresh it after an update. For help, contact Revup with the tool name and error message. Do not include tokens, passwords, or private download URLs.

Read the latest saved promotion and explain
what changed before applying my edit again.