ChatGPT custom app setup (MCP + OAuth)
Use this guide to connect your ChatGPT account to a custom Orgonaut app over MCP with OAuth.
This run book is written for tenant-hosted Orgonaut environments where each customer has its own subdomain, for example:
https://acme.orgonaut.co
For a distributable plugin, shared-host OAuth can use
https://app.orgonaut.co/mcp/orgonaut for every MCP-entitled organisation. During
consent, select and approve exactly one organisation. The client should discover
the shared metadata and use its advertised /oauth/mcp-shared/authorize,
/oauth/mcp-shared/token and /oauth/mcp-shared/register URLs. The scope remains
mcp:use; send no X-Tenant header. A web organisation or scenario switch does
not change this connection. Shared-host support defaults to disabled in new
deployments; use the tenant-hosted steps below when it is unavailable. See
Connect MCP clients for availability and
connection rules.
1) Prerequisites
Before you start, confirm:
- You can sign in to your Orgonaut tenant.
- You can reach your tenant domain in a browser (HTTPS required).
- You have permission to authorize applications for your tenant account.
- Your environment exposes the MCP and OAuth endpoints listed below.
If your production base domain differs from
orgonaut.co, keep the same paths and replace only the host.
2) Endpoint checklist (copy/paste)
For tenant acme, these are the exact endpoints ChatGPT needs during MCP + OAuth setup:
MCP server URL
https://acme.orgonaut.co/mcp/orgonaut
OAuth protected resource metadata
https://acme.orgonaut.co/.well-known/oauth-protected-resource/mcp/orgonaut
OAuth authorization server metadata
https://acme.orgonaut.co/.well-known/oauth-authorization-server/mcp/orgonaut
OAuth dynamic client registration
https://acme.orgonaut.co/oauth/register
OAuth authorization endpoint
https://acme.orgonaut.co/oauth/authorize
OAuth token endpoint
https://acme.orgonaut.co/oauth/token
3) Scope planning
For ChatGPT, request only the MCP transport scope:
mcp:use
Orgonaut still enforces your signed-in user's tenant role and data permissions on every MCP tool and resource call. ChatGPT does not need the full Orgonaut ability catalog during setup.
Advanced clients may optionally request extra Orgonaut ability scopes, such as:
scenarios.readorg-units.readteams.readplacements.readcosts.readorg-metrics.read
Those extra scopes act as an explicit narrowing layer for clients that want least-privilege tokens beyond the user's normal tenant access.
4) Create the custom app in ChatGPT
- In ChatGPT, open Settings → Connectors / Custom integrations (wording may vary by plan).
- Choose to add a new MCP-compatible custom app.
- Set the server URL to:
https://acme.orgonaut.co/mcp/orgonaut
- Choose OAuth 2.0 as the auth method.
- If prompted for manual OAuth values, use:
- Authorization URL:
https://acme.orgonaut.co/oauth/authorize - Token URL:
https://acme.orgonaut.co/oauth/token - Registration URL:
https://acme.orgonaut.co/oauth/register
- Authorization URL:
- Requested scopes:
mcp:use
- Save and continue.
ChatGPT should then read the well-known metadata and begin the authorization flow against your tenant-hosted endpoints.
Orgonaut's dynamic client registration endpoint is JSON-only and accepts ChatGPT's redirect URI by default in V1. If you later restrict MCP_REDIRECT_DOMAINS, make sure ChatGPT's redirect host is still allowed.
5) Complete OAuth consent
- ChatGPT redirects you to your Orgonaut tenant authorization page:
https://acme.orgonaut.co/oauth/authorize
- Sign in (if required).
- Review the compact authorization screen showing the app, organisation, account, and redirect target.
- Approve consent.
- You are redirected back to ChatGPT, which exchanges the code at:
https://acme.orgonaut.co/oauth/token
Once complete, ChatGPT has a tenant-scoped token for MCP calls.
6) Validate the connection in ChatGPT
Run these quick prompts in ChatGPT against your Orgonaut app:
- “List available scenarios.”
- “Give me an org summary for baseline.”
- “Show org unit metrics for engineering.”
- “Create a scenario called Test restructure and move one person to another team in it.” ChatGPT should show you the proposed change and wait for your approval before applying it. Live is not changed.
Under the hood, ChatGPT should be able to call MCP tools such as:
scenario.listorg.summaryorg.unit.metricsscenario.historytenant.settingsscenario.create,scenario.change.previewandscenario.action.confirmscenario.import.previewandscenario.import.confirm, to load an OrgSpec document into a planning scenario after you approve it
For the full canonical tool, resource, and prompt catalog, use MCP reference.
7) Troubleshooting run book
A) “Authorization failed” during connect
Check:
- Tenant host is correct (
acme.orgonaut.co, not the docs host). - OAuth endpoints are reachable:
https://acme.orgonaut.co/oauth/authorizehttps://acme.orgonaut.co/oauth/tokenhttps://acme.orgonaut.co/oauth/register
- Well-known metadata resolves:
https://acme.orgonaut.co/.well-known/oauth-protected-resource/mcp/orgonauthttps://acme.orgonaut.co/.well-known/oauth-authorization-server/mcp/orgonaut
B) Connected, but no data returned
Check:
- Granted scopes include
mcp:use. - Your signed-in user has tenant data access permissions.
- You are connecting to the correct tenant subdomain.
C) MCP works for one tenant, not another
Remember: OAuth access is tenant-scoped by host + MCP resource URL. Reconnect using that tenant's own subdomain.
D) New Orgonaut tools are missing
ChatGPT saves the app's tool list when you first connect it. When Orgonaut adds tools, such as scenario.create or scenario.import.preview, open the app in ChatGPT's settings and choose Refresh to load them. If your ChatGPT version has no refresh option, disconnect the app and connect it again.
E) Changes are refused
- A connection approved as Read only cannot create scenarios, prepare changes or import. Disconnect and connect again with Full access.
- Creating a scenario needs permission to create scenarios, and importing needs permission to manage imports, in your Orgonaut role.
- Changes and imports only apply to planning scenarios. Live is never changed over MCP.
8) Security notes
- Prefer OAuth over manual bearer token setup.
- Keep scopes least-privileged. For ChatGPT that normally means only
mcp:use. - Revoke app access in your account if a workspace no longer needs integration.
- Rotate credentials and re-authorize if you suspect token compromise.
9) Manual fallback (non-OAuth clients)
For clients that do not support OAuth yet, use:
- MCP URL:
https://acme.orgonaut.co/mcp/orgonaut - Header:
Authorization: Bearer <token> - Header:
X-Tenant: acme
Token requirements:
mcp.access(or legacymcp) for transport access- any required read abilities (
scenarios.read,org-units.read, etc.)
This manual MCP path is available on every plan.