MCP is rolling out to pilot tenants. The Allow MCP admin setting only appears if your tenant is enabled for the pilot. Contact your Empuls representative to join.
How it works
The MCP server runs at a fixed path on your Empuls tenant:- Discovers the server’s OAuth 2.1 metadata at
/.well-known/oauth-protected-resourceand/.well-known/openid-configuration. - Registers itself dynamically as an OAuth client (no manual client ID or secret to paste).
- Opens your browser so you can sign in to Empuls with your normal SSO.
- Receives a scoped access token and calls the MCP endpoint as you.
Bundled tools
The MCP server exposes a small, curated set of tools:redeem_points is the only tool that spends anything. It is marked as destructive so well-behaved clients ask you to approve each call, codes expire after five minutes, and only three code attempts are allowed per quote.
Turn Allow MCP on (Super Admin)
Before anyone in your tenant can connect an assistant, a Super Admin needs to turn MCP on.1
Open AI Permissions
Go to Reports and Admin > AI Settings > AI Permissions.
2
Enable Allow MCP
Turn on the Allow MCP card. This is the enforcement flag — the MCP server refuses tool calls from tenants where it is off, even if a user has already completed the OAuth flow.
If you do not see the Allow MCP card, your tenant is not in the pilot. Contact your Empuls representative to enable it.
Share setup with your team
From the Allow MCP card, select Share setup to open a ready-to-paste guide for your colleagues. The modal shows two things and copies each with one click:- The tenant connector URL (
https://<your-tenant>/chef/api/empuls/v1/mcp) for Claude, ChatGPT, Cursor, and Gemini. - The Claude Code install commands (
/plugin marketplace add …and/plugin install empuls@empuls).
Install the Empuls plugin — Claude Code
Empuls publishes a plugin bundle for Claude Code that pre-loads the skills and points the client at your tenant’s MCP URL. The bundle is served from your tenant, so you do not need GitHub access to install it.1
Add the Empuls marketplace
In Claude Code, run:
2
Install the plugin
3
Sign in
The first tool call opens your browser for Empuls SSO. Approve the requested scopes to finish setup.
Connect other MCP clients
Any MCP-compatible client can connect to the same endpoint. Bundled skills only load in Claude and Codex; on ChatGPT, Cursor, Gemini, and other hosts you get the tools (empuls_graphql, whoami, read_skill, redeem_points), the server’s built-in instructions, and the read_skill tool for on-demand guidance.
ChatGPT (Developer Mode)
ChatGPT (Developer Mode)
- Open Settings > Apps & Connectors and turn on Developer mode.
- Choose Add an MCP server.
- Set the URL to
https://<your-tenant>.xoxoday.com/chef/api/empuls/v1/mcpand complete the OAuth flow in your browser.
Claude Team or Enterprise (org connector)
Claude Team or Enterprise (org connector)
An org owner adds Empuls once, then users in the org can use it without extra credentials.
- Go to Settings > Connectors > Add connector.
- Paste
https://<your-tenant>.xoxoday.com/chef/api/empuls/v1/mcp. - Complete OAuth as the org owner.
Codex
Codex
Install the plugin from the co-located Codex manifest, then open a new thread so Codex loads the skills. Codex does not template config values, so edit the manifest’s
mcpServers.empuls.url and replace https://<your-empuls-tenant> with your actual tenant URL.Cursor, Gemini CLI, VS Code, or other MCP-over-HTTP clients
Cursor, Gemini CLI, VS Code, or other MCP-over-HTTP clients
Any client that speaks MCP over HTTP with OAuth can connect. Point it at
https://<your-tenant>.xoxoday.com/chef/api/empuls/v1/mcp and complete the browser OAuth flow.What you can ask an assistant to do
Once connected, phrase requests in plain language. Some examples:- “Give Priya a Spot Award for closing the Q3 renewal, 500 points, with a citation about her follow-through.”
- “Who has a birthday this week on my team? Post a wish to each of them.”
- “Show me last month’s redemption report grouped by department.”
- “Find everyone in Marketing who reports to Ravi.”
- “Redeem 1000 points for an Amazon India voucher.” (Your assistant runs
redeem_points, emails you a six-digit code, and only places the order after you paste the code back.)
read_skill, and calls the matching Empuls operation with empuls_graphql.
The consent screen (end users)
The first time a user connects an MCP client, Empuls opens an AI connector consent screen at/ai-connector/consent. It shows:
- The AI client’s name and logo (e.g. Claude, ChatGPT).
- The Empuls account the user is currently signed in as.
- The list of things the client will be allowed to do, derived from the user’s Empuls role. This list is read-only — the user cannot pick individual permissions.
- Allow and Deny buttons.
- Tenant not enabled. If Allow MCP is off for the tenant, the screen shows “Your administrator has not enabled AI assistant access for your organisation.” and hides both buttons. The user has no path forward until an admin turns MCP on.
- Role has no MCP permissions. If the user’s role does not grant any MCP scopes, the screen shows “Your Empuls role does not include any AI assistant permissions.” and the Allow button stays disabled.
Manage connected users (Super Admin)
Under AI Settings, the Connected AI clients panel lists every user in your tenant who has connected an assistant. For each user you see:
Revoke signs out every AI client that user has connected. One grant row backs all of a user’s MCP tokens, so revoking is not per-client — it cuts them all at once. The user can reconnect by going through the consent screen again.
Ban revokes and additionally blocks the user from consenting again. Choose Unban to allow them to reconnect. Ban writes a marker server-side; if a client’s cached token has not yet expired, that client may keep working briefly until the token refresh fails.
Safety and scope
- Runs as you. Every call uses your Empuls identity and ACL. An assistant cannot see reports, users, or budgets that you cannot see in the web app.
- Bulk pulls are capped. The server rate-limits and caps queries that would exfiltrate large slices of personal data.
- No secrets travel with the plugin. The only stored config is your tenant base URL. Tokens live in the client and refresh over OAuth.
- Point spending needs a code.
redeem_pointswill not place an order without the six-digit code the tenant emails you afterinitiate.
Troubleshooting the OAuth flow
If your client cannot connect, work through these steps in order:- Reachability. Confirm
https://<tenant>/chef/api/empuls/v1/mcpreturns HTTP 401. A 401 means the server is up and requiring auth; a timeout or DNS error means a network problem. - Discovery. Fetch
https://<tenant>/chef/.well-known/oauth-protected-resource/chef/api/empuls/v1/mcpandhttps://<tenant>/chef/.well-known/openid-configuration. Both must return JSON. Missing metadata is a tenant configuration issue — contact your Empuls admin. - Callback mismatch. If OAuth redirects and then returns
redirect_uri_mismatch, the client sent aredirect_urithat was not registered. Check the client’s registered redirect URIs. - Token refresh. If tools work initially and then stop after a few hours, the access token expired and refresh is failing. Re-run the OAuth flow from the client’s settings.
- ChatGPT connector cache. ChatGPT caches the OAuth config per connector. If you change the tenant URL, remove and re-add the connector to force a fresh discovery.
Related
- AI settings — enable AI features including Allow MCP.
- Em copilot — the built-in AI assistant inside the Empuls dashboard.