ChatGPT connects to remote MCP servers as custom MCP servers, added from Plugins and saved as a plugin. It registers itself with StackOne and runs the OAuth flow, so the URL is the whole configuration.Add the server in a browser at chatgpt.com/plugins. What you create belongs to your ChatGPT account or workspace, and the desktop app picks it up from there once it exists.
Adding a custom MCP server no longer requires Developer mode. Account and workspace policies still apply, so in a Business, Enterprise, or Edu workspace an admin may need to allow custom MCP servers first. The menu labels change often, so see OpenAI’s Connect and test your plugin guide for the current flow.
Enter a name and description, for example StackOne.
Under Connection, enter the MCP server URL:
https://mcp.stackone.com/mcp
Set authentication to OAuth and leave Advanced OAuth settings as discovered. ChatGPT discovers the endpoints and registers itself, so there is no client ID or secret to enter. No mcp-remote wrapper needed.
Review the risk warning and select I understand and want to continue.
Select Create as a plugin.
Select Connect StackOne to start the sign-in.
If Add custom MCP server is missing from the menu, a policy on your account or workspace is blocking it. In a Business, Enterprise, or Edu workspace, ask a workspace admin or owner to allow custom MCP servers for your role. On a personal plan, check OpenAI’s Connect and test your plugin guide for current availability.
2
Approve the consent screen
ChatGPT opens StackOne in your browser.Sign in, pick the project and the linked accounts the connector should reach, then Authorize.
Walk through the consent screen
Sign in to StackOne. If you are already signed in to the dashboard you skip straight to the next step.
Check where the connection returns. The line under the client’s logo shows where it goes after you approve. If it names localhost or an app on this device, only continue if you started the connection from that client.
Select a project. Select the project you would like to associate the connection with. If you belong to one project, this step is skipped.
Select accounts and actions. Existing linked accounts are shown. New accounts can be linked by clicking + Link Account. You can either select the whole account (all actions will be granted) or refine by toggling individual actions.
(Optional) Load tools when needed. On by default, and the toggle that puts the connection into Advanced Tool Search. Leave it on for large action sets. Turn it off to hand the agent every selected action up front.
Authorize. Completes the connection; you can return to your client.
Select a project
Select accounts
Toggle actions
If you see a sentence where the Load tools when needed toggle should be, an admin has already settled it for the whole project. See project settings.
Back in ChatGPT, review the tools it discovered, then install the plugin.
3
Share it with your workspace
The plugin is yours as soon as it is installed. Sharing it with everyone else depends on your plan.
Plus and Pro
Business
Enterprise and Edu
Not applicable. A personal account has no workspace to publish to. Skip to the next step.
An admin or owner opens Workspace Settings → Apps → Drafts and clicks Publish, reviewing the safety warnings for any write actions.Published apps show in the workspace’s approved connectors list, labeled custom. They cannot be edited afterwards, so changing the tools or metadata means creating and publishing the app again.
An admin or owner opens Workspace Settings → Apps → Drafts and clicks Publish.In the dialog that follows, Configure Actions selects which actions the app may run, and Configure Access limits it to specific groups. Both stay editable after publishing, from the ellipsis menu next to the app under Workspace Settings → Apps.
4
Use it in a chat
Start a new chat, type @, select the StackOne plugin, and try:
What StackOne tools are available?
The plugin works in the ChatGPT desktop app as well as the browser. It is not available on mobile.
OpenAI asks you to confirm that an OAuth provider issues refresh tokens. StackOne advertises offline_access in its discovery metadata and issues them, so ChatGPT renews access on its own. Nothing to configure.
ChatGPT works from a snapshot of the tools StackOne exposed when the server was added. Changing what StackOne exposes, by authorizing another linked account or enabling more actions on a connector profile, does not reach ChatGPT until the snapshot is refreshed:
A server you added yourself. Open it at ChatGPT Plugins and select Refresh.
An app an admin published to a workspace. Enterprise and Edu admins refresh from the ellipsis menu next to the app under Workspace Settings → Apps. Business plans cannot refresh a published app, so it has to be created and published again.
Advanced Tool Search sidesteps most of this. It replaces the per-action tool list with two stable tools, Search and Execute, so the snapshot holds however the underlying grant changes.To change which accounts or actions ChatGPT can reach, re-run the OAuth flow. To revoke it, use Connected Apps in the StackOne dashboard.
Connecting with a session token instead
A session token URL carries its own credential, so it covers the cases OAuth can’t: a shared server, a scheduled job, or anywhere nobody is present to approve a consent screen. For a comparison of each connection method, see Choosing a connection method.From the StackOne dashboard, go to Connectors, open a connector, then click Use in Agent.
Pick a linked account.
Set the expiry (one year by default).
Select HTTPS MCP and copy the URL. It should be in the format of:
This URL covers one linked account, and anyone holding it has that access until it expires, so treat it like a password.To enable Advanced Tool Search, add the tool-mode query parameter to the URL:
ChatGPT asks for approval before each StackOne call
Symptoms: ChatGPT pauses for approval on StackOne calls, or labels them a Suspicious Instruction.This can happen when Load tools when needed is on. ChatGPT can read the search-first instructions that come with Advanced Tool Search as an attempt to steer it. To give ChatGPT every selected action up front instead:
Re-run the OAuth flow.
On the consent screen, turn Load tools when needed off, then select Authorize.
Open the plugin at ChatGPT Plugins and select Refresh, so ChatGPT picks up the full tool list.
If the consent screen shows a sentence where the toggle should be, an admin has set it for the whole project. See project settings.
With your agent connected, use StackOne’s platform features to optimize performance and secure every call.
Advanced Tool Search
Reduce context and save tokens.
Deep Query
Search synced records for a fraction of the tokens.
Defender
Block prompt injections before they reach your agent.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Stackone","colors":{"primary":"#068F56","light":"#00AF66","dark":"#068F56"},"logo":{"light":"https://mintcdn.com/stackone-60/WsmKpuoeBZmio9QO/images/logo/logo-light-mode.svg?fit=max\u0026auto=format\u0026n=WsmKpuoeBZmio9QO\u0026q=85\u0026s=f08be9c0a142cb1e7fcaa23910c4bf7f","dark":"https://mintcdn.com/stackone-60/WsmKpuoeBZmio9QO/images/logo/logo-dark-mode.svg?fit=max\u0026auto=format\u0026n=WsmKpuoeBZmio9QO\u0026q=85\u0026s=b57d63594c13dee65c06a2d578927466"},"favicon":"https://mintcdn.com/stackone-60/EZ7nWzE-JJzhmP-C/images/logo/favicon.png?fit=max\u0026auto=format\u0026n=EZ7nWzE-JJzhmP-C\u0026q=85\u0026s=9012a8ae6ce9a80698406b611be47925","appearance":{"default":"light"},"background":{"image":{"light":"https://mintcdn.com/stackone-60/knwbcGlYFJSeLObv/images/background/light.svg?fit=max\u0026auto=format\u0026n=knwbcGlYFJSeLObv\u0026q=85\u0026s=112166d244e990ebc0146ff96958757c","dark":"https://mintcdn.com/stackone-60/knwbcGlYFJSeLObv/images/background/dark.svg?fit=max\u0026auto=format\u0026n=knwbcGlYFJSeLObv\u0026q=85\u0026s=50ec5e23eeb91f55e78a0da97dcaeb7b"},"color":{"dark":"#1a1a1a"}},"navbar":{"links":[{"icon":"circle-question","href":"/support","label":"Support"},{"href":"https://app.stackone.com","label":"Login"},{"href":"https://www.stackone.com/demo","label":"Book a demo"}],"primary":{"type":"button","label":"Start Free","href":"https://www.stackone.com/request-free-access"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/stackonehq","twitter":"https://twitter.com/StackOneHQ"}},"seo":{"metatags":{"canonical":"https://docs.stackone.com","google-site-verification":"gYj1x4gkdSwpCGVLFVXNVOPQ_wVrePW37ZKJt3HEqys"}},"fonts":{"heading":{"family":"Sf Pro Display","source":"https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2","format":"woff2"},"body":{"family":"Inter","source":"https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2","format":"woff2"}},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"gtm":{"tagId":"GTM-NZNK37TL"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"stackone-60","hasAudioNarration":false,"actualSubdomain":"stackone-60","customDomains":["docs.stackone.com"],"gitSource":{"type":"github","owner":"stackonehq","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae97b0e866f88edeb056ec7","collectionId":"c6de56b0-ae79-4784-a31e-4f46aa6d11ab","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae97b0e866f88edeb056ec7"},"feedback":{"thumbs":true,"edits":false,"issues":false,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae97b0e866f88edeb056ec7","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Connectors","count":9434},{"language":"default","tag":"Embed","count":84},{"language":"default","tag":"Platform API","count":62},{"language":"default","tag":"Gateway","count":49},{"language":"default","tag":"Features","count":48},{"language":"default","tag":"Connector Building","count":42},{"language":"default","tag":"Unified Actions","count":39},{"language":"default","tag":"Embed StackOne","count":36},{"language":"default","tag":"Call Actions","count":29},{"language":"default","tag":"Endpoints","count":25}],"searchSettings":{"isFiltersEnabled":true}},"assistantConfig":{"enableStarterQuestions":false,"deflection":{"enabled":true,"email":"support@stackone.com"}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","href":"/_mintlify/custom/stackone-60/e5c931b6e8140842/style.css"}],"page":{"pagePath":"connect/ai-platforms/chatgpt","slug":"/connect/ai-platforms/chatgpt","pageMetadata":{"title":"ChatGPT","description":"Connect StackOne MCP to ChatGPT as a custom MCP server with OAuth.","lastReviewed":"2026-08-29T03:17:26Z","href":"/connect/ai-platforms/chatgpt"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Connect StackOne MCP to ChatGPT as a custom MCP server with OAuth.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Columns,Frame,Heading,Info,Note,OptimizedImage,Step,Steps,Tab,Tabs}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Columns)_missingMdxReference(`Columns`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://chatgpt.com`,children:`ChatGPT`}),` connects to remote MCP servers as `,_jsx(_components.strong,{children:`custom MCP servers`}),`, added from `,_jsx(_components.strong,{children:`Plugins`}),` and saved as a plugin. It registers itself with StackOne and runs the OAuth flow, so the URL is the whole configuration.`]}),`\n`,_jsxs(_components.p,{children:[`Add the server in a browser at `,_jsx(_components.a,{href:`https://chatgpt.com/plugins`,children:`chatgpt.com/plugins`}),`. What you create belongs to your ChatGPT account or workspace, and the desktop app picks it up from there once it exists.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`Adding a custom MCP server no longer requires Developer mode. Account and workspace policies still apply, so in a Business, Enterprise, or Edu workspace an admin may need to allow custom MCP servers first. The menu labels change often, so see OpenAI’s `,_jsx(_components.a,{href:`https://developers.openai.com/plugins/deploy/connect-chatgpt`,children:`Connect and test your plugin`}),` guide for the current flow.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A StackOne `,_jsx(_components.a,{href:`/gateway/concepts/organizations-and-projects`,children:`project`}),` you are a member of.`]}),`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.a,{href:`/connect/managing-connectors/connector-profiles`,children:`connector profile`}),` in the project for each provider the client should reach, with the actions you want exposed enabled.`]}),`\n`,_jsxs(_components.li,{children:[`(Optional) A `,_jsx(_components.a,{href:`/connect/managing-connectors/linking-accounts`,children:`linked account`}),` for each provider. Accounts can also be linked during the consent flow.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`setup`,children:`Setup`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Add the custom MCP server`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Go to `,_jsx(_components.a,{href:`https://chatgpt.com/plugins`,children:`ChatGPT Plugins`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Add`}),`, then `,_jsx(_components.strong,{children:`Add custom MCP server`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Enter a name and description, for example `,_jsx(_components.code,{children:`StackOne`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Connection`}),`, enter the MCP server URL:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://mcp.stackone.com/mcp`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Set authentication to `,_jsx(_components.strong,{children:`OAuth`}),` and leave `,_jsx(_components.strong,{children:`Advanced OAuth settings`}),` as discovered. ChatGPT discovers the endpoints and registers itself, so there is no client ID or secret to enter. No `,_jsx(_components.code,{children:`mcp-remote`}),` wrapper needed.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Review the risk warning and select `,_jsx(_components.strong,{children:`I understand and want to continue`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Create as a plugin`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Connect StackOne`}),` to start the sign-in.`]}),`\n`]}),`\n`]}),_jsxs(_components.p,{children:[`If `,_jsx(_components.strong,{children:`Add custom MCP server`}),` is missing from the menu, a policy on your account or workspace is blocking it. In a Business, Enterprise, or Edu workspace, ask a workspace admin or owner to allow custom MCP servers for your role. On a personal plan, check OpenAI’s `,_jsx(_components.a,{href:`https://developers.openai.com/plugins/deploy/connect-chatgpt`,children:`Connect and test your plugin`}),` guide for current availability.`]})]}),_jsxs(Step,{title:`Approve the consent screen`,children:[_jsx(_components.p,{children:`ChatGPT opens StackOne in your browser.`}),_jsxs(_components.p,{children:[`Sign in, pick the project and the `,_jsx(_components.a,{href:`/connect/managing-connectors/linking-accounts`,children:`linked accounts`}),` the connector should reach, then `,_jsx(_components.strong,{children:`Authorize`}),`.`]}),_jsxs(Accordion,{title:`Walk through the consent screen`,id:`walk-through-the-consent-screen`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Sign in to StackOne.`}),` If you are already signed in to the dashboard you skip straight to the next step.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Check where the connection returns.`}),` The line under the client’s logo shows where it goes after you approve. If it names localhost or an app on this device, only continue if you started the connection from that client.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Select a project.`}),` Select the project you would like to associate the connection with. If you belong to one project, this step is skipped.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Select accounts and actions.`}),` Existing linked accounts are shown. New accounts can be linked by clicking `,_jsx(_components.strong,{children:`+ Link Account`}),`. You can either select the whole account (all actions will be granted) or refine by toggling individual actions.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`(Optional) Load tools when needed.`}),` On by default, and the toggle that puts the connection into `,_jsx(_components.a,{href:`/optimize/advanced-tool-search`,children:`Advanced Tool Search`}),`. Leave it on for large action sets. Turn it off to hand the agent every selected action up front.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Authorize.`}),` Completes the connection; you can return to your client.`]}),`\n`]}),_jsxs(Columns,{cols:3,children:[_jsx(Frame,{caption:`Select a project`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/stackone-60/09ChgExN01gpADnF/images/mcp/oauth-consent-select-project.png?fit=max\u0026auto=format\u0026n=09ChgExN01gpADnF\u0026q=85\u0026s=de028c13efd3deb163e7e6df2d5d5a22`,alt:`StackOne authorization screen listing organizations, with a project selected inside one of them`,style:{width:`100%`,aspectRatio:`780 / 877`,objectFit:`cover`},\"data-og-width\":`1294`,width:`1294`,\"data-og-height\":`924`,height:`924`,\"data-path\":`images/mcp/oauth-consent-select-project.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/stackone-60/09ChgExN01gpADnF/images/mcp/oauth-consent-select-project.png?w=280\u0026fit=max\u0026auto=format\u0026n=09ChgExN01gpADnF\u0026q=85\u0026s=81b5e04f724724cd86867474f65c1678 280w, https://mintcdn.com/stackone-60/09ChgExN01gpADnF/images/mcp/oauth-consent-select-project.png?w=560\u0026fit=max\u0026auto=format\u0026n=09ChgExN01gpADnF\u0026q=85\u0026s=178130455eb250b880cb24ac289c489d 560w, https://mintcdn.com/stackone-60/09ChgExN01gpADnF/images/mcp/oauth-consent-select-project.png?w=840\u0026fit=max\u0026auto=format\u0026n=09ChgExN01gpADnF\u0026q=85\u0026s=526c65232f6d2dfc352f506b2229d5a4 840w, https://mintcdn.com/stackone-60/09ChgExN01gpADnF/images/mcp/oauth-consent-select-project.png?w=1100\u0026fit=max\u0026auto=format\u0026n=09ChgExN01gpADnF\u0026q=85\u0026s=1333c8e14f76a06c3e1b1aef73801c84 1100w, https://mintcdn.com/stackone-60/09ChgExN01gpADnF/images/mcp/oauth-consent-select-project.png?w=1650\u0026fit=max\u0026auto=format\u0026n=09ChgExN01gpADnF\u0026q=85\u0026s=66d12c14e9022226404c115b37f6cd34 1650w, https://mintcdn.com/stackone-60/09ChgExN01gpADnF/images/mcp/oauth-consent-select-project.png?w=2500\u0026fit=max\u0026auto=format\u0026n=09ChgExN01gpADnF\u0026q=85\u0026s=3914c48a4b2dbf321c9343ab54b218b2 2500w`})}),_jsx(Frame,{caption:`Select accounts`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-accounts.png?fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=cdcf3d79600332d06113ed75c55c0225`,alt:`StackOne authorization screen showing two linked accounts, Linear and Open-Meteo, both selected, above the Load tools when needed toggle`,\"data-og-width\":`1560`,width:`1560`,\"data-og-height\":`1754`,height:`1754`,\"data-path\":`images/mcp/oauth-consent-select-accounts.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-accounts.png?w=280\u0026fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=f92127e953c32f5fa979e61d369390c9 280w, https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-accounts.png?w=560\u0026fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=8aade5708e01ddb15a50c0126320270c 560w, https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-accounts.png?w=840\u0026fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=cb4ba2eadb3141c008ac0b21342ee632 840w, https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-accounts.png?w=1100\u0026fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=45ca214b8494110d1c9aee48304b56a2 1100w, https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-accounts.png?w=1650\u0026fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=ff367ea47eece7706f46baf64039e704 1650w, https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-accounts.png?w=2500\u0026fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=62b1bc94926f3815497a4f7fe061c802 2500w`})}),_jsx(Frame,{caption:`Toggle actions`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-actions.png?fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=9f1246d1991b50c33cbd161b07d5ca77`,alt:`An expanded linked account showing individual actions with toggles, descriptions, and category tags`,\"data-og-width\":`1560`,width:`1560`,\"data-og-height\":`1754`,height:`1754`,\"data-path\":`images/mcp/oauth-consent-select-actions.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-actions.png?w=280\u0026fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=b4b31ac699c13bce6ca3ab08112bb780 280w, https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-actions.png?w=560\u0026fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=d1708981b5da852bcd6dcc637bf8c275 560w, https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-actions.png?w=840\u0026fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=6642672a0aa8bd381b86b6d5b4088b3c 840w, https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-actions.png?w=1100\u0026fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=167e61811f8f29c85d3f08ff94dfc173 1100w, https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-actions.png?w=1650\u0026fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=64a96d1251a6dba7fdbfc4e431ab2058 1650w, https://mintcdn.com/stackone-60/0prlrmjeswzs-fZr/images/mcp/oauth-consent-select-actions.png?w=2500\u0026fit=max\u0026auto=format\u0026n=0prlrmjeswzs-fZr\u0026q=85\u0026s=d656a691e69614c702647ae88f3144a5 2500w`})})]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`If you see a sentence where the `,_jsx(_components.strong,{children:`Load tools when needed`}),` toggle should be, an admin has already settled it for the whole project. See `,_jsx(_components.a,{href:`/optimize/advanced-tool-search#setting-it-for-a-whole-project`,children:`project settings`}),`.`]})})]}),_jsx(_components.p,{children:`Back in ChatGPT, review the tools it discovered, then install the plugin.`})]}),_jsxs(Step,{title:`Share it with your workspace`,children:[_jsx(_components.p,{children:`The plugin is yours as soon as it is installed. Sharing it with everyone else depends on your plan.`}),_jsxs(Tabs,{children:[_jsx(Tab,{title:`Plus and Pro`,id:`plus-and-pro`,children:_jsx(_components.p,{children:`Not applicable. A personal account has no workspace to publish to. Skip to the next step.`})}),_jsxs(Tab,{title:`Business`,id:`business`,children:[_jsxs(_components.p,{children:[`An admin or owner opens `,_jsx(_components.strong,{children:`Workspace Settings → Apps → Drafts`}),` and clicks `,_jsx(_components.strong,{children:`Publish`}),`, reviewing the safety warnings for any write actions.`]}),_jsxs(_components.p,{children:[`Published apps show in the workspace’s approved connectors list, labeled `,_jsx(_components.strong,{children:`custom`}),`. They cannot be edited afterwards, so changing the tools or metadata means creating and publishing the app again.`]})]}),_jsxs(Tab,{title:`Enterprise and Edu`,id:`enterprise-and-edu`,children:[_jsxs(_components.p,{children:[`An admin or owner opens `,_jsx(_components.strong,{children:`Workspace Settings → Apps → Drafts`}),` and clicks `,_jsx(_components.strong,{children:`Publish`}),`.`]}),_jsxs(_components.p,{children:[`In the dialog that follows, `,_jsx(_components.strong,{children:`Configure Actions`}),` selects which actions the app may run, and `,_jsx(_components.strong,{children:`Configure Access`}),` limits it to specific groups. Both stay editable after publishing, from the ellipsis menu next to the app under `,_jsx(_components.strong,{children:`Workspace Settings → Apps`}),`.`]})]})]})]}),_jsxs(Step,{title:`Use it in a chat`,children:[_jsxs(_components.p,{children:[`Start a new chat, type `,_jsx(_components.code,{children:`@`}),`, select the StackOne plugin, and try:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`What StackOne tools are available?`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsx(_components.p,{children:`The plugin works in the ChatGPT desktop app as well as the browser. It is not available on mobile.`})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`OpenAI asks you to confirm that an OAuth provider issues refresh tokens. StackOne advertises `,_jsx(_components.code,{children:`offline_access`}),` in its discovery metadata and issues them, so ChatGPT renews access on its own. Nothing to configure.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`keeping-the-tool-list-current`,children:`Keeping the tool list current`}),`\n`,_jsxs(_components.p,{children:[`ChatGPT works from a snapshot of the tools StackOne exposed when the server was added. Changing what StackOne exposes, by authorizing another linked account or enabling more actions on a `,_jsx(_components.a,{href:`/connect/managing-connectors/connector-profiles`,children:`connector profile`}),`, does not reach ChatGPT until the snapshot is refreshed:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`A server you added yourself.`}),` Open it at `,_jsx(_components.a,{href:`https://chatgpt.com/plugins`,children:`ChatGPT Plugins`}),` and select `,_jsx(_components.strong,{children:`Refresh`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`An app an admin published to a workspace.`}),` Enterprise and Edu admins refresh from the ellipsis menu next to the app under `,_jsx(_components.strong,{children:`Workspace Settings → Apps`}),`. Business plans cannot refresh a published app, so it has to be created and published again.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/optimize/advanced-tool-search`,children:`Advanced Tool Search`}),` sidesteps most of this. It replaces the per-action tool list with two stable tools, Search and Execute, so the snapshot holds however the underlying grant changes.`]}),`\n`,_jsxs(_components.p,{children:[`To change which accounts or actions ChatGPT can reach, re-run the OAuth flow. To revoke it, use `,_jsx(_components.strong,{children:`Connected Apps`}),` in the StackOne dashboard.`]}),`\n`,_jsxs(Accordion,{title:`Connecting with a session token instead`,icon:`key`,id:`connecting-with-a-session-token-instead`,children:[_jsxs(_components.p,{children:[`A session token URL carries its own credential, so it covers the cases OAuth can’t: a shared server, a scheduled job, or anywhere nobody is present to approve a consent screen. For a comparison of each connection method, see `,_jsx(_components.a,{href:`/connect/ai-platforms/overview#choosing-a-connection-method`,children:`Choosing a connection method`}),`.`]}),_jsxs(_components.p,{children:[`From the StackOne dashboard, go to `,_jsx(_components.a,{href:`https://app.stackone.com/connectors`,children:_jsx(_components.strong,{children:`Connectors`})}),`, open a connector, then click `,_jsx(_components.strong,{children:`Use in Agent`}),`.`]}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Pick a linked account.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Set the expiry (one year by default).`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`HTTPS MCP`}),` and copy the URL. It should be in the format of:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://api.stackone.com/mcp?token={session_token}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`]}),_jsx(_components.p,{children:`This URL covers one linked account, and anyone holding it has that access until it expires, so treat it like a password.`}),_jsxs(_components.p,{children:[`To enable `,_jsx(_components.a,{href:`/optimize/advanced-tool-search`,children:`Advanced Tool Search`}),`, add the `,_jsx(_components.code,{children:`tool-mode`}),` query parameter to the URL:`]}),_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://api.stackone.com/mcp?token={session_token}\u0026tool-mode=search_execute`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsxs(_components.p,{children:[`Paste the token URL as the MCP server URL and set authentication to `,_jsx(_components.strong,{children:`No Authentication`}),`. One server then covers one linked account.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsx(AccordionGroup,{children:_jsxs(Accordion,{title:`ChatGPT asks for approval before each StackOne call`,id:`chatgpt-asks-for-approval-before-each-stackone-call`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Symptoms:`}),` ChatGPT pauses for approval on StackOne calls, or labels them a `,_jsx(_components.strong,{children:`Suspicious Instruction`}),`.`]}),_jsxs(_components.p,{children:[`This can happen when `,_jsx(_components.strong,{children:`Load tools when needed`}),` is on. ChatGPT can read the search-first instructions that come with `,_jsx(_components.a,{href:`/optimize/advanced-tool-search`,children:`Advanced Tool Search`}),` as an attempt to steer it. To give ChatGPT every selected action up front instead:`]}),_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Re-run the OAuth flow.`}),`\n`,_jsxs(_components.li,{children:[`On the consent screen, turn `,_jsx(_components.strong,{children:`Load tools when needed`}),` off, then select `,_jsx(_components.strong,{children:`Authorize`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Open the plugin at `,_jsx(_components.a,{href:`https://chatgpt.com/plugins`,children:`ChatGPT Plugins`}),` and select `,_jsx(_components.strong,{children:`Refresh`}),`, so ChatGPT picks up the full tool list.`]}),`\n`]}),_jsxs(_components.p,{children:[`If the consent screen shows a sentence where the toggle should be, an admin has set it for the whole project. See `,_jsx(_components.a,{href:`/optimize/advanced-tool-search#setting-it-for-a-whole-project`,children:`project settings`}),`.`]})]})}),`\n`,_jsx(Heading,{level:`2`,id:`optimize-and-secure`,children:`Optimize and secure`}),`\n`,_jsx(_components.p,{children:`With your agent connected, use StackOne’s platform features to optimize performance and secure every call.`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Advanced Tool Search`,icon:`magnifying-glass`,href:`/optimize/advanced-tool-search`,children:_jsx(_components.p,{children:`Reduce context and save tokens.`})}),_jsx(Card,{title:`Deep Query`,icon:`magnifying-glass-chart`,href:`/optimize/deep-query`,children:_jsx(_components.p,{children:`Search synced records for a fraction of the tokens.`})}),_jsx(Card,{title:`Defender`,icon:`shield-halved`,href:`/secure/defender`,children:_jsx(_components.p,{children:`Block prompt injections before they reach your agent.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"ChatGPT","description":"Connect StackOne MCP to ChatGPT as a custom MCP server with OAuth.","lastReviewed":"2026-08-29T03:17:26Z","href":"/connect/ai-platforms/chatgpt"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Setup","slug":"setup","depth":2,"children":[]},{"title":"Keeping the tool list current","slug":"keeping-the-tool-list-current","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Optimize and secure","slug":"optimize-and-secure","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/stackone-60/072d59ca3ea476f6/status-indicator.js","/_mintlify/custom/stackone-60/2cef6058362559bc/connectors.js","/_mintlify/custom/stackone-60/af28b3fbb0435529/hubspot-form.js","/_mintlify/custom/stackone-60/ec01e4530a66d850/end-users.js"],"subdomain":"stackone-60","siteName":"Stackone","title":"ChatGPT - Stackone","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T10:06:56.485Z","originalFileLocation":"connect/ai-platforms/chatgpt.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Connect StackOne MCP to ChatGPT as a custom MCP server with OAuth.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Stackone\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/stackone-60/vUkZo0TYnLvO23Z1/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/stackone-60/vUkZo0TYnLvO23Z1/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/stackone-60/vUkZo0TYnLvO23Z1/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/stackone-60/vUkZo0TYnLvO23Z1/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/stackone-60/vUkZo0TYnLvO23Z1/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/stackone-60/vUkZo0TYnLvO23Z1/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/stackone-60/vUkZo0TYnLvO23Z1/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/stackone-60/vUkZo0TYnLvO23Z1/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/stackone-60/vUkZo0TYnLvO23Z1/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"ChatGPT - Stackone\">\u003cmeta data-mint-head property=\"og:description\" content=\"Connect StackOne MCP to ChatGPT as a custom MCP server with OAuth.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Stackone\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.stackone.com/connect/ai-platforms/chatgpt\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://stackone-60.mintlify.app/_mintlify/api/og/v2?division=AI+Platforms\u0026amp;title=ChatGPT\u0026amp;description=Connect+StackOne+MCP+to+ChatGPT+as+a+custom+MCP+server+with+OAuth.\u0026amp;theme=841e834217e7bb36731c6d12\u0026amp;signature=27a89d58c9c0bcad9ce595eb28c7be2b8f51180e5379c0b56ae916771135f3a2\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"ChatGPT - Stackone\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Connect StackOne MCP to ChatGPT as a custom MCP server with OAuth.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://stackone-60.mintlify.app/_mintlify/api/og/v2?division=AI+Platforms\u0026amp;title=ChatGPT\u0026amp;description=Connect+StackOne+MCP+to+ChatGPT+as+a+custom+MCP+server+with+OAuth.\u0026amp;theme=841e834217e7bb36731c6d12\u0026amp;signature=27a89d58c9c0bcad9ce595eb28c7be2b8f51180e5379c0b56ae916771135f3a2\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/stackone-60/vUkZo0TYnLvO23Z1/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Stackone\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#068F56\">\u003cmeta data-mint-head name=\"google-site-verification\" content=\"gYj1x4gkdSwpCGVLFVXNVOPQ_wVrePW37ZKJt3HEqys\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.stackone.com/connect/ai-platforms/chatgpt\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/connect/ai-platforms/chatgpt.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.stackone.com/#organization\",\"name\":\"Stackone\",\"url\":\"https://docs.stackone.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/stackone-60/WsmKpuoeBZmio9QO/images/logo/logo-light-mode.svg?fit=max\u0026auto=format\u0026n=WsmKpuoeBZmio9QO\u0026q=85\u0026s=f08be9c0a142cb1e7fcaa23910c4bf7f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.stackone.com#website\",\"name\":\"Stackone\",\"url\":\"https://docs.stackone.com\",\"publisher\":{\"@id\":\"https://docs.stackone.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.stackone.com/connect/ai-platforms/chatgpt#webpage\",\"url\":\"https://docs.stackone.com/connect/ai-platforms/chatgpt\",\"name\":\"ChatGPT\",\"description\":\"Connect StackOne MCP to ChatGPT as a custom MCP server with OAuth.\",\"dateModified\":\"2026-10-26T10:06:56.485Z\",\"isPartOf\":{\"@id\":\"https://docs.stackone.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.stackone.com/connect/ai-platforms/chatgpt#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.stackone.com/connect/ai-platforms/chatgpt#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Connect\",\"item\":\"https://docs.stackone.com/connect/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI Platforms\",\"item\":\"https://docs.stackone.com/connect/ai-platforms/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"ChatGPT\",\"item\":\"https://docs.stackone.com/connect/ai-platforms/chatgpt\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.stackone.com/connect/ai-platforms/chatgpt#article\",\"headline\":\"ChatGPT\",\"name\":\"ChatGPT\",\"description\":\"Connect StackOne MCP to ChatGPT as a custom MCP server with OAuth.\",\"url\":\"https://docs.stackone.com/connect/ai-platforms/chatgpt\",\"mainEntityOfPage\":{\"@id\":\"https://docs.stackone.com/connect/ai-platforms/chatgpt#webpage\"},\"dateModified\":\"2026-10-26T10:06:56.485Z\",\"publisher\":{\"@id\":\"https://docs.stackone.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.stackone.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Stackone\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Stackone","nav":{"global":null,"tabs":[{"tab":"Gateway","icon":"rocket","groups":[{"group":"End Users","root":{"title":"Use StackOne in Your AI Platform","sidebarTitle":"Overview","mode":"center","href":"/end-users/overview"},"pages":[{"title":"Use StackOne in Claude","sidebarTitle":"Claude","mode":"center","href":"/end-users/claude"}]},{"group":"Introduction","root":{"title":"Introduction","href":"/introduction"},"expanded":true,"pages":[{"group":"Core Concepts","root":{"title":"Core Concepts","href":"/gateway/concepts/overview"},"pages":[{"title":"Organizations \u0026 Projects","href":"/gateway/concepts/organizations-and-projects"},{"group":"Connectors","root":{"title":"Connectors","href":"/gateway/concepts/connectors"},"pages":[{"title":"Actions","href":"/gateway/concepts/actions"},{"title":"Events","href":"/gateway/concepts/events"}]}]},{"title":"Quickstart","href":"/gateway/quickstart"},{"title":"Dashboard","href":"/gateway/dashboard"},{"title":"Platform Features","href":"/gateway/platform-features"}]},{"group":"Connect","root":{"title":"Connect","href":"/connect/overview"},"expanded":true,"pages":[{"group":"Managing Connectors","pages":[{"title":"Connector Profiles","href":"/connect/managing-connectors/connector-profiles"},{"title":"Linking Accounts","href":"/connect/managing-connectors/linking-accounts"},{"title":"Adding MCP Connectors","href":"/connect/managing-connectors/adding-mcp-connectors"},{"title":"Use Your Own OAuth Apps","href":"/connect/managing-connectors/using-your-own-oauth-apps"}]},{"group":"AI Platforms","pages":[{"title":"AI Platforms (MCP)","sidebarTitle":"MCP Server","description":"Connect chat apps, coding agents and automation platforms to StackOne over MCP with one URL, and let each user choose the accounts and actions it can reach.","href":"/connect/ai-platforms/overview"},{"title":"ChatGPT","href":"/connect/ai-platforms/chatgpt"},{"title":"Claude Code","description":"Connect StackOne MCP to Claude Code with OAuth using built-in MCP commands.","href":"/connect/ai-platforms/claude-code"},{"title":"Claude Desktop \u0026 Web","href":"/connect/ai-platforms/claude-desktop"},{"title":"Codex (OpenAI)","href":"/connect/ai-platforms/codex"},{"title":"Cursor","href":"/connect/ai-platforms/cursor"},{"title":"Gemini CLI","href":"/connect/ai-platforms/gemini"},{"title":"Glean","href":"/connect/ai-platforms/glean"},{"title":"Goose CLI \u0026 Desktop","href":"/connect/ai-platforms/goose"},{"title":"n8n Automation","href":"/connect/ai-platforms/n8n"},{"title":"VS Code (Copilot)","href":"/connect/ai-platforms/vscode"}]},{"title":"Protocols \u0026 SDKs","href":"/connect/protocols-and-sdks"},{"title":"Webhooks","sidebarTitle":"Webhook Events","href":"/connect/webhooks"},{"title":"Troubleshooting","href":"/connect/troubleshooting"}]},{"group":"Optimize","root":{"title":"Optimize","sidebarTitle":"Overview","href":"/optimize/overview"},"expanded":true,"pages":[{"title":"Advanced Tool Search","href":"/optimize/advanced-tool-search"},{"group":"Data Sync","root":{"title":"Data Sync","href":"/optimize/data-sync/overview"},"pages":[{"title":"Data Sync Events","sidebarTitle":"Events","href":"/optimize/data-sync/events"}]},{"title":"Deep Query","href":"/optimize/deep-query"}]},{"group":"Secure","root":{"title":"Secure","href":"/secure/overview"},"expanded":true,"pages":[{"title":"Defender","href":"/secure/defender"},{"title":"Scoping Connectors","href":"/secure/scoping-connectors"},{"title":"Tool Policies","href":"/secure/policies"},{"title":"PII Redaction","href":"/secure/pii-redaction"},{"group":"Identity and Access","root":{"title":"Identity and Access","href":"/secure/identity-and-access/overview"},"pages":[{"group":"Authentication","root":{"title":"Authentication","href":"/secure/identity-and-access/authentication/overview"},"pages":[{"group":"Single Sign-On","root":{"title":"Single Sign-On","href":"/secure/identity-and-access/authentication/sso/overview"},"pages":[{"title":"Okta SSO","href":"/secure/identity-and-access/authentication/sso/okta"},{"title":"Microsoft Entra SSO","href":"/secure/identity-and-access/authentication/sso/microsoft-entra"},{"title":"Generic SAML SSO","href":"/secure/identity-and-access/authentication/sso/saml-generic"}]},{"title":"Passwords and MFA","href":"/secure/identity-and-access/authentication/passwords-and-mfa"}]},{"group":"Manage Team","root":{"title":"Manage Team","href":"/secure/identity-and-access/manage-team/overview"},"pages":[{"title":"Invite Users","href":"/secure/identity-and-access/manage-team/invite-users"},{"title":"Just-in-Time Provisioning","href":"/secure/identity-and-access/manage-team/jit"},{"group":"SCIM Provisioning","root":{"title":"SCIM Provisioning","href":"/secure/identity-and-access/manage-team/scim/overview"},"pages":[{"title":"Okta SCIM Provisioning","sidebarTitle":"Okta","href":"/secure/identity-and-access/manage-team/scim/okta"},{"title":"Microsoft Entra SCIM Provisioning","sidebarTitle":"Microsoft Entra","href":"/secure/identity-and-access/manage-team/scim/microsoft-entra"},{"title":"SCIM Groups","href":"/secure/identity-and-access/manage-team/scim/groups"}]}]},{"group":"Roles and Groups","root":{"title":"Roles and Groups","href":"/secure/identity-and-access/roles-and-groups/overview"},"pages":[{"title":"Organization Roles","href":"/secure/identity-and-access/roles-and-groups/organization-roles"},{"title":"Project Roles","href":"/secure/identity-and-access/roles-and-groups/project-roles"},{"title":"Connector Profile Access","href":"/secure/identity-and-access/roles-and-groups/connector-profile-access"},{"title":"Shared Accounts","href":"/secure/identity-and-access/roles-and-groups/shared-accounts"},{"title":"Groups","href":"/secure/identity-and-access/roles-and-groups/groups"}]}]},{"title":"IP Restrictions","href":"/secure/ip-restrictions"},{"title":"Observability","href":"/secure/observability"},{"title":"Self-Hosted Deployment","href":"/secure/self-hosted-deployment"}]}]},{"tab":"Connectors","icon":"plug","pages":[{"title":"Connectors","href":"/connectors/introduction"}]},{"tab":"Embed","icon":"cube","pages":[{"title":"Embed","href":"/embed/overview"}]},{"tab":"Platform API","icon":"code","pages":[{"title":"Platform API","href":"/platform-api/overview"}]}]},"basePath":"","title":"ChatGPT - Stackone","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-DW6UFrUy.js","DynamicMarkdown-B62XqCSI.js","zoom-image-lightbox-eHyQ0tlO.js","lightbox-handle-r17bVUz3.js"]}