Skip to content

Connect ChatGPT

Nexus MCP works in ChatGPT as a custom plugin through its public Streamable HTTP endpoint and built-in OAuth 2.1 flow.

Supported now

The plugin connection is not waiting for future OAuth work. Nexus already provides OAuth discovery, dynamic client registration, PKCE S256 authorization, consent, refresh-token rotation, and revocation.

The exact availability of developer mode and custom plugins can depend on the ChatGPT plan, workspace role, and administrator policy. OpenAI's current workflow is documented in Connect and test your plugin.

Before you start

Confirm all of the following:

  • the customer MCP hostname is public and has a valid TLS certificate;
  • the user can sign in to the correct Nexus tenant in the browser;
  • the advertiser or publisher member has the required Nexus permissions;
  • ChatGPT developer mode/custom plugins are allowed for the account or workspace;
  • pop-ups and redirects are allowed during the first OAuth connection.

You do not need to copy a Nexus API key into ChatGPT.

Step 1: use the member endpoint

text
https://mcp.example.com/mcp

This public connection is for advertiser and publisher members. Administrative connections are provided privately from the Nexus Account Managers screen.

Step 2: enable developer mode

  1. Open ChatGPT → Settings.
  2. Open Security and login.
  3. Enable Developer mode.
  4. If the control is unavailable in a managed workspace, ask the workspace owner to allow custom plugins.

The label can change as ChatGPT evolves, but the official flow always starts by enabling developer access for custom MCP plugins.

Step 3: create the Nexus plugin

  1. Open ChatGPT Plugins.
  2. Select the + button to add a plugin.
  3. Enter the connection details:
FieldValue
NameNexus Member
DescriptionNexus advertiser, campaign and reporting tools
Connection URLhttps://mcp.example.com/mcp
  1. Create the plugin and let ChatGPT discover the server metadata and available tools.
  2. Review the displayed tool names before completing the connection.

Never use /docs, /api-docs, the REST api. hostname, or a URL containing a credential.

Step 4: authorize Nexus

ChatGPT opens the Nexus OAuth flow automatically:

  1. Nexus identifies the requested member MCP resource.
  2. If necessary, the browser opens the normal Nexus login page for that customer.
  3. Sign in to the intended Nexus account. The MCP page itself never asks for a password.
  4. Review the tenant, ChatGPT callback origin, and requested scopes.
  5. Approve only the access required for this connection.
  6. Nexus returns a one-time authorization code to ChatGPT; ChatGPT stores opaque MCP tokens.

Recommended starting scopes:

text
nexus:read

Request additional scopes only for the intended workflows:

text
nexus:write       # confirmed campaign/feed/entity changes
nexus:upload      # permitted CSV uploads
offline_access    # refresh and approved scheduled tasks

Step 5: review tools and enable the plugin

The tool list is filtered for the authorized member identity, enabled modules, scopes, and ownership.

Useful tools to look for include:

  • nexus_whoami
  • nexus_help
  • nexus_list_campaigns and nexus_get_campaign for advertiser members
  • nexus_get_advertiser_stats
  • nexus_analyze_statistics
  • nexus_resolve_command and nexus_plan_commands
  • nexus_read, nexus_query, and confirmed write tools when permitted

Open a new conversation, select Nexus from ChatGPT's tools/plugins menu, and keep it enabled for that chat.

First safe test

Start by confirming identity and permissions:

Use Nexus to show my authenticated account type, tenant, enabled modules, OAuth scopes, and the capability groups available to me. Do not change anything.

Expected behavior:

  1. ChatGPT calls nexus_whoami.
  2. Nexus validates the OAuth token and live Nexus session identity.
  3. The result identifies the tenant and role without returning credentials.

Concrete advertiser examples

List owned campaigns

Show my active campaigns, sorted by daily spend descending. Return CID, name, bid, daily budget, spend, and status. Follow pagination and state whether the total is exact.

ChatGPT should use nexus_list_campaigns with a narrow request similar to:

json
{
  "status": "active",
  "orderBy": "d_revenue",
  "order": "desc",
  "offset": 0,
  "limit": 100,
  "detailLevel": "summary"
}

Inspect one campaign

Show the complete configuration for campaign 12345, including budget flags, schedule, geo, device, browser, carrier, frequency cap, and allow/block lists. Do not change it.

This should resolve to nexus_get_campaign with campaignId: 12345. A foreign or missing CID returns the same not-found response and does not reveal another advertiser's data.

Analyze advertiser statistics

Analyze my advertiser campaign statistics for 2026-08-01 through 2026-08-17. Recompute weighted KPIs, rank campaigns by spend and conversions, compare the previous equal-length period, and flag data-quality issues. Do not change campaigns.

Nexus retrieves all required result pages before producing totals. Percentages and unit economics are recomputed instead of being summed.

How a campaign change should look

For a write-enabled connection, ask for a preview first:

Prepare changing campaign 12345's daily budget to 200 EUR. Read the current state, show the exact non-secret diff and validation result, but do not execute until I confirm.

The safe sequence is:

  1. resolve the command and read campaign 12345;
  2. load the operation contract and validate the proposed payload;
  3. display the exact before/after values;
  4. wait for an explicit confirmation from the user;
  5. create a payload-bound approval/fingerprint;
  6. execute once with an idempotency key;
  7. read the campaign again and report whether verification succeeded.

If the preview differs from the user's intent, do not confirm it. A confirmation cannot be reused for a changed payload.

Multi-command example

Pause Search feed 15, activate XML feed 22, and show campaign 45.

Nexus creates three ordered steps. The two mutations receive separate previews and confirmations; the campaign read needs no mutation confirmation. Execution is sequential and non-atomic, so ChatGPT must report partial completion precisely if a later step fails.

Common connection problems

SymptomLikely causeResolution
Plugin URL is rejectedWrong hostname/path or invalid TLSUse the exact public https://mcp.<domain>/mcp URL
Authorization opens the wrong Nexus areaThe wrong account is active in the browserSign out, select the intended member, and reconnect /mcp
OAuth login loopsStale Nexus/ChatGPT session, blocked cookies, or callback policySign out, reconnect the plugin, and verify the exact callback origin
No tools appearDiscovery failed or cached metadata is staleRemove/re-add the plugin and check MCP readiness/logs
A tool is missingCurrent role/module/scope does not permit itCheck nexus_whoami; do not broaden permissions blindly
Read works but change is blockednexus:write is absent or confirmation is incompleteReconnect with the required scope and follow preview/confirmation
Token stops working after role/tenant changeIdentity binding correctly rejected driftRemove the connection and authorize it again

For protocol and server-side diagnostics, continue with MCP troubleshooting.

White-label Nexus API documentation