This guide walks a Salesforce Admin through installing the TaskRay MCP - Connector package, locking down its OAuth app to a secure baseline, granting users access, and sharing the connection link. Once complete, your team can link their own AI tool to their TaskRay data, and each connection is scoped to that user's own Salesforce permissions.
This guide covers:
- What ships in the package
- Enrolling in the beta
- Installing it
- Required post-install security configuration
- The permission sets involved and what each does
- How write approvals work
- Optionally exposing custom fields to TaskRay MCP
- Sharing the connection link, including shared setup for Team/Enterprise AI workspaces
- Frequently asked questions
Overview
- Per-user and least-privilege. Every connection is scoped to that user's own Salesforce permissions. Connecting never grants access beyond what the user already has.
- Nothing to host. The MCP server is a shared, publisher-hosted deployment. There is no server for you to stand up, and its address is compiled into the package (not subscriber-editable).
-
Server-side token custody. The Salesforce refresh token stays on the server, and your AI tool only ever holds an opaque token scoped to the minimum
ApiOAuth permission.
What Ships in the Package
| Component | What it is |
|---|---|
| TaskRay Agents External Client App | The OAuth client. Its OAuth/App policies are not packaged, so you configure them post-install (below). |
| TaskRay Agents - User permission set | Grants Apex class access and API Enabled, which every MCP tool call needs. Assign it to anyone who should connect. |
| TaskRay Agents - Admin permission set | Admin-only, separate from the User set. It unlocks the TaskRay AI Assistant Fields config screen and grants no data access of its own. |
| TaskRay Agents - Ungated Writes permission set | Optional, admin-assigned to an individual user. It lets that user's deletes and bulk changes execute immediately instead of queuing for approval (see Step 3). |
| TaskRay AI Assistant Fields tab | The admin screen for opting your org's custom fields into visibility for TaskRay MCP. Standard and TaskRay-managed fields are exposed by default, and your custom fields are opt-in. |
Enroll in the Beta
Getting started with TaskRay MCP beta begins with a quick enrollment.
- Complete the beta enrollment form and sign the participation agreements. [link/contact, confirm with your TaskRay contact before publishing]
- Once your enrollment is completed and approved, you'll receive an email with your install link for Step 1 below.
Step 1: Install the Package
Once enrolled, install from the install link you were given (an AppExchange listing, if used, produces the same flow).
- Open the install link and sign in as a System Administrator. Use the production link, or the sandbox-org equivalent, matching your target org.
- On the install screen, choose "Install for Admins Only."
- Click Install and wait for confirmation.
OAUTH_EC_APP_NOT_FOUND error. Always distribute and upgrade via package install.Step 2: Post-Install Security Configuration
The External Client App's OAuth policies are not carried by the package and reset to permissive defaults on every install. Complete the steps below before granting users access.
2.1 Lock Down App Authorization
By default the app installs with Permitted Users = "All users may self-authorize," letting any user mint a token for the MCP server. Restrict it to approved users.
a. Create a local permission set for app access
- From Setup, navigate to Permission Sets | New. Name it, for example, "TaskRay Agents App Access."
- Save it. It needs no specific entitlements, and its only purpose is app authorization.
SetupEntityAccess…MANAGED_INSTALLED error. The packaged set is still required, just for a different purpose (Apex/API access, see step c).b. Set the app to admin-approved and pre-authorize your permission set
- From Setup, navigate to External Client App Manager | TaskRay Agents | Edit Policies.
- Under OAuth Policies, set Permitted Users → "Admin approved users are pre-authorized."
- Two multi-select pickers appear (Profiles, Permission Sets). In the Permission Sets picker, move "TaskRay Agents App Access" from Available to Selected.
- Click Save.
SetupEntityAccess…MANAGED_INSTALLED error, you selected the packaged set by mistake, so use your local set instead.c. Assign both permission sets to each MCP user
| Permission set | Type | What it grants |
|---|---|---|
| TaskRay Agents App Access | Local | Authorizes the app (the ECA pre-authorization from step b) |
| TaskRay Agents - User | Packaged | Apex class access and API Enabled, required for every MCP tool call |
2.2 Refresh-Token Policy
- Under External Client App Manager | TaskRay Agents | Edit Policies | OAuth Policies.
- Set Refresh Token Policy → "Expire refresh token after" an inactivity window matching your security tolerance.
The default on install is 365 days. Tighten it. The MCP server holds a long-lived token on the user's behalf, so a shorter idle window limits exposure.
2.3 IP Relaxation
Set IP Relaxation → "Relax IP restrictions." This is the correct setting, not a security shortcut:
- The MCP server has dynamic egress IPs, so there is no fixed range to add to Login IP Ranges. Enforcing one would block the integration outright.
- Login IP Ranges govern where a session originates. Your users' interactive sign-in still happens from their own browser and stays subject to all your normal login policies, MFA included. Only the server's background API calls come from the cloud host.
2.4 Verify
- Confirm a user with both permission sets can open the connection page and complete OAuth.
- Confirm a user without App Access is denied.
- Confirm a user without TaskRay Agents - User can sign in, but their tool calls fail.
Step 3: Understand Write Approvals
TaskRay MCP doesn't execute deletes or large bulk changes directly. It queues them for a human to approve first, and nothing is written until someone confirms it.
- Only the person who proposed the action can approve it, not any other user, and not an admin on their behalf. Approving requires signing back in as that same person.
- Unapproved requests expire after 24 hours by default. An expired request was never executed.
Step 4 (Optional): Expose Custom Fields to TaskRay MCP
By default TaskRay MCP can read standard and TaskRay-managed fields, but none of your org's own custom fields. This step is optional. Skip it and only standard and managed fields are exposed, which is the safe default.
a. Assign the TaskRay Agents - Admin permission set
This config screen is gated by a third, separate permission set from the two above. Assign TaskRay Agents - Admin to yourself or whoever curates field exposure. It grants the config tab and its Apex, and no data access of its own.
b. Open the TaskRay AI Assistant Fields tab
From the App Launcher, search for "TaskRay AI Assistant Fields" and open it. Only users with the TaskRay Agents - Admin set can see the tab or its contents.
c. Opt fields in
- Pick a TaskRay object. The core planning objects (Projects, Tasks, Task Groups, Checklist Items, Checklist Groups) come first.
- Toggle on the custom fields TaskRay MCP may read, then Save.
Step 5: Share the Connection Link
There is no in-org button to place. Users connect from the publisher-hosted connection page:
-
Production orgs:
https://mcp.taskray.com/oauth/login -
Sandbox / scratch orgs:
https://mcp.taskray.com/oauth/login?sandbox=true(so sign-in goes totest.salesforce.com)
Signing in there gives the user a ready-to-use claude mcp add command (Claude Code) and their org's connector URL (web tools). Hand end users the connection guide for the tool they use: Claude Code, claude.ai, ChatGPT, Microsoft Copilot Studio, or Salesforce Agentforce.
Step 6: How Your Users Connect
- Claude Code. A ready-to-run command pasted into a terminal once.
- Web tools (claude.ai, ChatGPT). A connector URL pasted into the tool's connector settings, which signs in with Salesforce automatically. The same URL works in every web tool.
- Microsoft Copilot Studio. Maker-configured, so a maker adds the connector once and each user signs in individually on first use. See the companion Copilot Studio Setup Guide.
- Salesforce Agentforce. Register TaskRay's connector URL as an external MCP server in Agentforce, then each user signs in with their own Salesforce login. This is Salesforce's own agent platform acting as an MCP client, and it is separate from the prebuilt TaskRay AI agent (see the FAQ).
Setting Up a Shared Web Connector (Team / Enterprise)
In claude.ai and ChatGPT Team/Enterprise, custom connectors are added by a workspace admin once for the whole workspace, and each member then authenticates individually.
- Enable custom connectors in your AI tool. They're off by default on most Enterprise plans, and this is the gate that blocks everyone, including admins, until enabled.
- Get your org's connector URL. As any provisioned user, open the connection page and sign in once. The connected page shows your org's connector URL, so copy it.
- Add it as the workspace connector in your AI tool.
- Tell your users to sign in. They open the now-visible TaskRay connector and complete their own Salesforce sign-in. There is no URL for them to paste.
What You Can Do with TaskRay MCP
- Get a live project status in seconds. Ask your AI to summarize any project and get a plain-language rundown of what's complete, what's blocked, and what's due next, with no clicking required.
- Triage your week in one prompt. Ask what you own this week across all your projects, ordered by deadline with blockers flagged. Your Monday morning in one sentence.
- Spin up a new project from a template. Name the customer, name the template, and give a start date, and your AI creates the full project structure in TaskRay and handles the scheduling.
- Log and reconcile time without the grind. Describe your week in plain language and the assistant maps it to tasks, drafts the entries, and waits for your approval before filing anything.
- Walk into every customer call prepared. Pull a project status, recent email threads, and notes from the last call into a single brief before you get on the phone.
Frequently Asked Questions
Q. Agentforce comes up in two places. How do TaskRay MCP, TaskRay AI, and Agentforce fit together?
They are related but distinct. TaskRay MCP (this product) connects an AI tool to your TaskRay data through an MCP server, and the surfaces the beta supports are Claude, Claude Code, Microsoft Copilot, Agentforce, and ChatGPT. Agentforce connects the same way the other web tools do: you register TaskRay's connector URL as an external MCP server in Agentforce, and each person signs in with their own Salesforce login. TaskRay AI is a separate product: a prebuilt Agentforce agent that TaskRay ships as its own managed package, with its own permission set and setup. It runs inside Salesforce and does not use the MCP connector described here. So "Agentforce" can mean either connecting your own Agentforce agent to TaskRay MCP or installing the prebuilt TaskRay AI agent, and you can use either or both.
Q. Sign-in opened the production login instead of my sandbox. What happened?
Use the ?sandbox=true connection link for sandbox and scratch orgs (Step 5). The production link always sends sign-in to login.salesforce.com.
Q. A user gets "access denied" when they try to sign in. What's going on?
They aren't pre-authorized on the External Client App yet. Confirm their App Access permission set is in the Selected column (2.1.b) and that it's actually assigned to them (2.1.c).
Q. Sign-in works, but a user's tool calls fail. Why?
They're missing the TaskRay Agents - User permission set, which grants the API Enabled entitlement every tool call needs.
Q. I got a SetupEntityAccess…MANAGED_INSTALLED error while saving. What do I do?
You selected the packaged permission set as the ECA's authorization holder. Use your local set instead (2.1.a).
Q. I'm seeing an OAUTH_EC_APP_NOT_FOUND error. What caused it?
The External Client App was source-deployed rather than installed via package, which corrupts its install state. Reinstall via package install only (Step 1).
Q. TaskRay MCP is connected, but it can't see or update records I expected. Is something wrong?
No, this is working as designed. Access always mirrors the connecting user's own Salesforce permissions. Adjust that user's field-level security or sharing, not TaskRay MCP.
Q. What happens if I revoke a user's access later?
Deactivating the Salesforce user, or removing either of their two permission sets, ends their access right away. The connection has no independent life of its own.
Q. Someone asked TaskRay MCP to delete something (or make a bulk change), and it says the action is pending approval. What does that mean?
Nothing has been written yet. Deletes and large bulk changes are queued for approval before they execute. Only the person who proposed the action can approve it, not any other user and not an admin on their behalf, by signing back in to confirm. If it isn't approved within 24 hours, the request expires and nothing happens.
Q. Can I let a trusted user skip the approval step?
Yes. Assign that user the optional TaskRay Agents - Ungated Writes permission set (Step 3). Their deletes and bulk changes will then execute immediately instead of queuing. This is a deliberate grant an admin makes per user, and a user can't opt themselves out.
Have a question that isn't answered here? Contact TaskRay Support with the exact error text, which org (production or sandbox), and which AI tool.