Pick your platform above. Copilot Studio signs in with Microsoft. Claude and ChatGPT connect with the personal connector URL from your activation page and need no Microsoft sign-in.

For Microsoft 365 organizations

How it fits into your agents

Second Opinion for Sales is not a standalone app. It installs as an MCP tool on an existing Copilot Studio agent. From there, two patterns work:

  • Tool on your agent. Add it directly to a sales agent your team already uses. That agent gains the behavioral read as one of its tools.
  • Child agent for a Master Sales Agent. Wrap it in a small dedicated agent, and connect that agent as a child of your master sales agent, the one with access to Salesforce, Dataverse, or your CRM. The master agent pulls the conversation from your CRM, sends one speaker's words to the child, and weaves the read into its own deal guidance. Copy-paste description and instructions for the child agent are provided below.

Before you start

  • An active Second Opinion for Sales subscription from Microsoft AppSource, with a license seat assigned to each user who will connect.
  • A work or school Microsoft 365 account. Personal Microsoft accounts are not supported.
  • An existing agent in Copilot Studio to install the tool on, or make a new one for the child-agent pattern.
Copilot Studio access is its own requirement. The person doing this setup needs maker access to Copilot Studio: a Microsoft 365 Copilot license, a Copilot Studio user license, or the Copilot Studio authors role. A Copilot Studio trial lets you build and test but cannot publish. To run the published agent, each user needs a Microsoft 365 Copilot license (agent usage under their own sign-in is included), or your tenant needs Copilot Studio capacity (Copilot Credits, prepaid or pay as you go). The tool also requires generative orchestration to be turned on for the agent.

There is no API key, client ID, or secret to manage. Copilot Studio uses Dynamic discovery: you enter one server URL and authentication configures itself. Each user signs in with their own Microsoft 365 account, and that sign-in is the credential.

Administrator step, one time per organization

Before anyone in your organization connects, an administrator makes Second Opinion for Sales known to your Microsoft 365 tenant. Until this is done, sign-in fails with error AADSTS650052.

Pause here. A Microsoft 365 administrator completes this part.

If you are not an administrator in your tenant, copy this section to the person who is, and wait for their confirmation before continuing. Both parts take under five minutes.

A.
Create the service principal. In a terminal with the Azure CLI, signed in to your tenant (az login --allow-no-subscriptions), run:
az ad sp create --id 86171dc8-e8f7-499f-ad82-595d75162961
B.
Grant consent. In a browser, signed in as a Global Administrator of your tenant, paste this address and accept:
https://login.microsoftonline.com/common/adminconsent?client_id=86171dc8-e8f7-499f-ad82-595d75162961

Run A before B. The landing page after B may show a sign-in error from our server; that is expected and harmless. What matters is the address bar: admin_consent=True with no error= parameter means consent succeeded.

Do not continue past this point until your administrator confirms both parts are done.

Connect in Copilot Studio

  1. 1
    Copy the MCP endpoint.
    MCP endpoint
    https://mcp.pansophyai.com/mcp
  2. 2
    Open your agent at copilotstudio.microsoft.com, the one you want to add Second Opinion for Sales to.
  3. 3
    Add the MCP tool. Click Add a tool, then New tool, and choose Model Context Protocol. Paste the endpoint from step 1 as the server URL.
  4. 4
    Set authentication. This is the step that makes or breaks the connection.

    For authentication, choose OAuth 2.0, then Dynamic discovery. Nothing else.

    Do not choose "No authentication." The tool may appear to save, but every call will be rejected, and the half-made connection has to be deleted before you can retry cleanly. If you already created one with No authentication, delete that tool and start again from step 3.

    Leave the other fields alone; they fill in from the server. Click Create.

    The tool is created without asking you for a client ID, client secret, or Authorization, Token, and Scope URLs. If it asks for those, authentication is not set to Dynamic discovery; go back and fix it before continuing.
  5. 5
    Add to your agent and sign in once. Add the tool to your agent and choose Create new connection. Sign in with the Microsoft 365 account that holds a license seat, and approve the consent prompt.
    If sign-in fails with AADSTS650052, the administrator step above has not been completed in your tenant. If it fails on the license, confirm the account has a seat in the Microsoft 365 admin center under Billing, Licenses, Second Opinion for Sales.
  6. 6
    Connect for the first time in the test chat. Open the test chat and send any message that uses the tool. The first time, the chat will not run the tool; it tells you a connection is needed. Click Open connection manager, find Second Opinion for Sales in the list, click Connect, sign in, and allow. Then return to the test chat and try again.
    The connection shows as Connected in the connection manager, and the test chat stops asking.
    Every user gets this one-time connect prompt the first time they use the agent. It is normal; they connect once with their own Microsoft 365 account and it holds from then on.
  7. 7
    Run it from a chat, then publish. Test from an actual chat with your agent, not the tool setup page. Paste a block of sales conversation and ask for a second opinion on the seller or the prospect. Then save and publish; each user signs in with their own Microsoft 365 account.
    If the setup page says "No tools available," that is cosmetic. The tool runs from a real agent chat.

Set it up as a child agent

To make the read available to a master sales agent, wrap the tool in a small dedicated agent and connect it as a child. The description and instructions below are ready to paste; they carry the guardrails with them, so the read stays safe no matter which parent agent calls it.

  1. 1
    Create the wrapper agent. In Copilot Studio, create a new agent named Second Opinion for Sales Agent in the same environment as your master sales agent. Add the MCP tool to it using the connect steps above.
  2. 2
    Paste the description.
    Agent description
    Behavioral sales analyst powered by Second Opinion for Sales. Give it one person's words from a sales conversation (call transcript, email thread, discovery notes), at least 400 characters, and say whether that person is the seller or the prospect. It returns a behavioral read: a one-line key finding, a fuller second opinion, two to three concrete next steps, and a read confidence. Use it before drafting outreach, prepping a call, or deciding the next move in a live deal. It reads patterns in language; it does not predict whether a deal will close.
  3. 3
    Paste the instructions.
    Agent instructions
    You are a sales coach built on Second Opinion for Sales. Your one capability is the second_opinion tool, which analyzes one person's words from a sales conversation and returns a behavioral read.
    
    Input rules
    - The tool takes the text of ONE speaker plus their role: "seller" or "prospect". Role sets the interpretation lens. If you cannot tell which it is, ask; never guess silently.
    - You need at least 400 characters of that person's own words (up to 50,000). If you have less, ask for more material instead of calling the tool. Longer samples produce a more reliable read.
    - For a multi-speaker transcript, split by speaker and call once per speaker.
    - Do not scrub names or personal details before sending. That is handled server-side.
    
    Delivering the read
    - Never read the result back like a form, and never unload everything at once. Lead with the key finding, the single highest-leverage move, the hard call if the profile is unfavorable, and an offer to draft the next message. Hold the fuller read and reasoning in reserve until asked.
    - Deliver it as your own advice, in the user's voice and register, woven together with what you already know about their deal.
    
    Two limits that always hold
    1. Never claim the read predicts whether the deal will close, or that it is an accurate, validated, or scientific measure of the person. Confidence in the read is fine; claims of predictive accuracy are not.
    2. Trait and personality language is for coaching the user only. It never appears in any message drafted for the prospect. Translate the insight into behavior and benefit instead: not "he reads as high in neuroticism," but a line that reassures him he will not be left exposed after signing.
    
    The read is words, never numbers. Do not invent scores, percentages, or rankings that the tool did not return.
    
    When another agent calls you
    - Return the read in a structured, labeled form the caller can use: key finding, recommended move, next steps, read confidence.
    - Pass the two limits along as explicit handling notes, so the calling agent does not put trait language in front of a prospect or present the read as a deal prediction.
    - If the caller sends mixed-speaker text or no role, ask it to split and label rather than proceeding on a guess.
    
    Scope
    - You analyze sales conversations. Decline requests to profile people outside a sales context, to act as a lie detector, or to produce psychological assessments. Offer the sales read instead.
  4. 4
    Allow it to be called. In the wrapper agent's Settings, turn ON Let other agents connect to and use this one. Publish the agent.
  5. 5
    Connect it to your master sales agent. In the master agent, add the wrapper as a connected agent. We recommend unchecking "Pass conversation history to this agent". This does not cut off the data: the master agent always sends an explicit task when it calls the child, and the instruction snippet in the next step makes it put the speaker's text and role inside that task. What unchecking prevents is the child receiving your entire conversation, both speakers, your coaching exchanges, and CRM context along for the ride. The tool should read one person's words, nothing more.
    On very long transcripts, if the child comes back saying it received too little text, re-send with the speaker's text pasted directly into your request to the master agent, or re-check the box for that connection.
  6. 6
    Add this to your master agent's instructions. It tells the master how to call the child correctly and keeps the guardrails intact on its side of the connection. The child agent will ask for a split and a role if it receives mixed text, but handling it here saves that round trip.
    Master agent instruction snippet
    When you need a behavioral read on someone in a deal, call the Second Opinion for Sales Agent.
    
    Sending a request
    - Send the words of ONE speaker only, at least 400 of their own characters, and state their role: "seller" or "prospect". Pull their words from the transcript, email thread, or CRM record and leave the other speakers out. Do not send the whole conversation.
    - Do not rely on conversation history to carry the text. Include the speaker's text and role explicitly in each request.
    
    Using the read
    - The read comes back as a key finding, a recommended move, next steps, and a read confidence. Weave it into your own guidance; do not paste it back as a form.
    - Never present the read as a prediction that the deal will close, or as a validated measure of the person.
    - Trait and personality language is for coaching the user only. It never appears in any message drafted for the prospect; translate it into behavior and benefit instead.
    - Do not write the read or any trait language into memory, CRM fields, or any other persistent store. The read is for the conversation at hand.

Troubleshooting sign-in

ConditionWhat it means and what to do
AADSTS650052Your organization does not yet have the Second Opinion for Sales service principal. Complete the administrator step above, part A before part B, then retry.
tenant_not_provisioned
seat_verification_required
The account does not yet have an active seat, or the first-connect license check has not completed. Confirm the subscription and seat assignment in the Microsoft 365 admin center. The first call right after activation may need a moment.
tenant_mismatchThe sign-in used a different Microsoft 365 tenant than the subscription. Sign in with the account that holds the seat.
Works on all Claude plans  ·  Web, desktop, and mobile

Your connector URL

Claude connects with the personal connector URL issued on your activation page when you completed your purchase. No Microsoft sign-in is needed inside Claude; the URL is your seat and your credential.

Treat it like a password. Anyone who has your connector URL can use your seat and your monthly analyses. Do not share it, post it, or commit it anywhere. Copy it, do not open it in a browser.

Lost your connector URL? For security it is shown only once. If you subscribed through Microsoft AppSource, open the activation link in the Microsoft email titled "Your SaaS subscription is ready" and sign in with the same account; your connector URL is reissued. Otherwise, contact support@pansophyai.com and we will reissue it within one business day. Reissuing turns off the old URL.

Connect in Claude

  1. 1
    Go to claude.ai, click your profile icon, then Settings, then Connectors.
  2. 2
    Click the + icon and choose Add custom connector. Paste your connector URL into the URL field. Leave all other fields empty. Click Add.
    Second Opinion for Sales appears in your connectors list with a green connected indicator, with no sign-in and no consent screen.
    Make sure you copied the full URL with no extra spaces. It must start with https://. If Claude prompts you to authenticate, you can skip it.
  3. 3
    Use it in a chat. Start a new chat, click the + icon next to the message box, find Second Opinion for Sales, and turn it on. Paste a block of sales conversation and ask Claude to run a second opinion on the seller or the prospect.
    Claude calls the tool and returns a key finding, the full second opinion, and next steps.
    If it doesn't appear in the + menu, go back to Settings, Connectors and confirm it shows as connected. Open a fresh chat after adding the connector.

Troubleshooting

ConditionWhat it means and what to do
401 / not authorizedThe connector URL is incomplete or has been reissued. Re-copy it exactly, or recover it using the instructions above.
monthly_cap_reachedYour seat has used its 100 analyses for the month. The count resets at the start of the next month.
Requires ChatGPT Plus, Pro, Business, Enterprise, or Edu  ·  Web only

Your connector URL

ChatGPT connects with the same personal connector URL issued on your activation page. ChatGPT calls custom MCP servers "apps," and adding one needs Developer mode turned on first. Because your connector URL is its own credential, you choose No authentication.

Treat it like a password. Anyone who has your connector URL can use your seat. Lost it? Recover it the same way as described on the Claude tab: AppSource buyers re-open the activation link from the Microsoft "Your SaaS subscription is ready" email; otherwise contact support@pansophyai.com.

Connect in ChatGPT

  1. 1
    Turn on Developer mode. Go to chatgpt.com, open Settings, then Apps. Click Advanced settings and turn on Developer mode.
    If you don't see Developer mode, your plan may not support it. Confirm you're on Plus, Pro, Business, Enterprise, or Edu, on the web.
  2. 2
    Create the app. Back on the Apps screen, click Create app. Name it Second Opinion for Sales. Leave the connection on Server URL and paste your connector URL. Set Authentication to No authentication.
  3. 3
    Acknowledge and create. Tick I understand and want to continue, then click Create.
    If ChatGPT cannot reach the server, check that you pasted the full connector URL with no extra spaces or line breaks.
  4. 4
    Enable it per conversation. Start a new chat, click the + in the message bar, choose More, and select Second Opinion for Sales. ChatGPT does not carry it over from your last chat.
  5. 5
    Run your first read. Paste a block of sales conversation and ask for a second opinion on the seller or the prospect.
    ChatGPT calls the tool and returns a key finding, the full second opinion, and next steps.

Troubleshooting

ConditionWhat it means and what to do
401 / not authorizedThe connector URL is incomplete or has been reissued. Re-copy it exactly, or recover it using the instructions above.
monthly_cap_reachedYour seat has used its 100 analyses for the month. The count resets at the start of the next month.
For engineers building their own agents

Simplest path: your connector URL

The personal connector URL from your activation page works as the MCP server URL in any MCP-capable framework, with no headers and no token management.

OpenAI Responses API

{
  "type": "mcp",
  "server_label": "second-opinion-for-sales",
  "server_url": "<your personal connector URL>"
}

Anthropic Messages API (MCP connector)

"mcp_servers": [
  {
    "type": "url",
    "url": "<your personal connector URL>",
    "name": "second-opinion-for-sales"
  }
]
Keep your connector URL out of source control. It is a credential. Load it from an environment variable or secret store, never a committed config file. If it is exposed, contact support@pansophyai.com and we will reissue it.

Advanced path: Microsoft Entra bearer token

Organizations on the AppSource subscription can instead authenticate with a delegated Microsoft Entra token against https://mcp.pansophyai.com/mcp. This ties every call to a signed-in user and their license seat. It requires the one-time administrator step from the Copilot Studio tab, plus an app registration in your own tenant with the delegated Score.Read permission (found under APIs my organization uses, Second Opinion for Sales) and Allow public client flows enabled for device-code sign-in.

# 1. request a device code
curl -s -X POST \
  https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode \
  -d "client_id=YOUR_APP_CLIENT_ID" \
  -d "scope=api://86171dc8-e8f7-499f-ad82-595d75162961/Score.Read offline_access openid"

# 2. open the verification_uri, enter the user_code, sign in
# 3. exchange the device_code for an access token
curl -s -X POST \
  https://login.microsoftonline.com/organizations/oauth2/v2.0/token \
  -d "grant_type=urn:ietf:params:oauth:grant-type:device_code" \
  -d "device_code=<device_code>" \
  -d "client_id=YOUR_APP_CLIENT_ID"

Pass the resulting access_token as a bearer on calls to https://mcp.pansophyai.com/mcp. The refresh_token renews it without signing in again.

Troubleshooting

ConditionWhat it means and what to do
401 / not authorizedConnector URL path: the URL is incomplete or reissued; re-copy or recover it. Bearer path: the token expired or lacks Score.Read; refresh it with the scope shown above.
delegated_required
insufficient_scope
The token was issued to an application rather than a signed-in user, or is missing Score.Read. Re-obtain a delegated user token with the scope above.
invalid_jwt
expired_jwt
The token is malformed or expired. Obtain a fresh token or use your refresh token.

Using the tool

The tool takes the text you want analyzed and the role of the speaker, and returns a key finding, a full second opinion written for selling, next steps for the call, and a read confidence.

Your agent handles the speaker work. Second Opinion for Sales reads one person at a time and does not split a multi-speaker conversation for you. Your agent parses the conversation, isolates the text for the one person you want read, and labels whose words they are with the role input.

The read confidence describes how well the text you gave supported the read, not a prediction of whether the deal will close. A high or low standing on any dimension is a position with trade-offs in a sales context, not a measure of good or bad.

Your submitted text is scrubbed for personal information, scored, and discarded. It is never stored. Each seat includes up to 100 analyses per month.

ConditionWhat it means and what to do
role_required
invalid_role
The role input is missing or not one of seller / prospect. Set it and retry.
Text lengthSubmitted text must be between 400 and 50,000 characters. Shorten or lengthen the input and retry.

Need help

Pansophy AI Inc., Support  ·  support@pansophyai.com  ·  We respond within one business day.