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
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 tenant is on the
business,enterprise, oragencyplan. - 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.”
Under the hood, ChatGPT should be able to call MCP tools such as:
scenario.listorg.summaryorg.unit.metricsscenario.historytenant.settings
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.
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 also limited to the business, enterprise, and agency plans.