Test it end to end
Nine steps, about 20 minutes, with PtEverywhere Sandbox: a clinic with its own database, login, API and activity log. Every call shows in the chat, on Activity, and in the sandbox with the SQL it ran.
Before you start
- Claude on a paid plan, or ChatGPT on the web with Developer mode on.
- In ChatGPT, changes need a Business, Enterprise or Edu workspace.
- Pro, to publish. Steps 1 to 5 are free.
- The demo sign-ins, which also open PtEverywhere Sandbox:
The steps
Under Demo products, press Connect next to PtEverywhere Sandbox. On a new account, open ⋯ and pick “Load the full demo” first.
- The route at the top reads Product API · PtEverywhere Sandbox, with a filled dot.
- The product API card says “Calls go to PtEverywhere Sandbox” and “21 endpoints · 7 intents live”.
- Demo products says “Connected · 2 people signed in”.
- “Your login endpoint” is picked and reads
POST /auth/login · 2 roles mapped. - Edit shows the token path
token, the role fieldrole, and both roles mapped.
- Front desk has four live intents, Clinician three.
- “Who hasn’t paid in more than 30 days?” reads, and shows as Checklist.
- “Book a follow-up call Thursday at 9.” reads back first, Undo cancels it, and shows as Slot pick.
- Every live intent has a view or Text only. Nothing to change for the demo.
Pick Front desk under As, and say “Who hasn't paid in more than 30 days?”
- Four rows come back by reference,
p_0407$310 first. No names. - Activity has the call, not tagged Sample, with 200.
- “See it in the sandbox →” on that row opens the same request in the sandbox, with its SQL.
Press “Publish to ChatGPT”, then copy the address. The same address works in Claude. Publishing needs Pro. Testing is free.
- ChatGPT shows Live, and People lists Front desk and Dr. Patel.
Add PtEverywhere to the AI app
On the sign-in page, type the front desk’s demo email and password, and press Sign in. On sample data the page asks for a sign-in code from Publish › People instead. In Claude, set the settings in In Claude below.
- Settings › Connectors › Add custom connector.
- Name it PtEverywhere and paste the address. Keep what Claude marks Detected: Sign in now, and Register automatically. No request headers. Add.
- Press Connect, sign in on the PtEverywhere page and press Allow once.
- Open the connector and set Tool permissions to Always allow for every group.
- Start a new chat and say the first intent.
- Open ChatGPT on the web, then Settings › Apps › Advanced settings, and switch Developer mode on.
- Open Plugins and press + for New Plugin.
- Name it PtEverywhere. Server URL: the address above. Authentication: OAuth. Tick the risk box. Create.
- Open a new chat, press + and pick PtEverywhere. It asks you to sign in; sign in with your PtEverywhere account.
- Say the first intent.
- The page is titled “Sign in to use PtEverywhere in ChatGPT” and never says Zest.
- Back in the chat, the AI app lists eight tools. An empty list means the sign-in was refused.
Say the five lines
In a new chat with PtEverywhere switched on, in order.
- “Text this patient their statement.” is logged as a request: no intent does it.
- Signed in as the clinician, “Sign the note n_0412.” answers that you do this yourself in PtEverywhere, with a link.
- Activity: each call carries the AI app’s mark and the person. The booking is one change row, with the read-back, the yes and the undo.
- The sandbox’s API activity: the same calls, each with the SQL it ran and who asked.
- Requests lists the statement by text.
In Claude
Claude’s Add custom connector dialog asks three things: keep what it marks Detected. After the sign-in, change one more: tool permissions.
Tool permissions sit on the connector’s page, in three groups: Interactive tools (the ones that draw a view), Read-only tools and Write/delete tools. Set each group to Always allow.
Pick the role, then the sentence
Claude only has the signed-in person’s tools, so a view draws only for a sentence that role can do. Under a view Claude should add one short sentence, not the rows again.
To switch person: Settings › Connectors › PtEverywhere › Disconnect, then Connect and sign in as the other person, and start a new chat. A chat keeps the tools it started with.
If Claude does something else
What trips a first run
- Say clock times. "Thursday at 9" works; "sometime next week" does not. The AI app has to send an exact time.
- Two yeses. A second yes answers "Already booked" and nothing doubles. A yes more than ten minutes after the read-back gets the read-back again.
- Personal ChatGPT accounts cannot write. Plus and Pro accounts can look things up, but ChatGPT blocks changes there. Use a Business workspace or Claude.
- An empty tool list means the sign-in was refused. The code was used or older than 15 minutes. Make a new one and add it again.
- Pick the role before the question. An AI app only has the signed-in role’s tools. The clinician has no balances read, so “Who hasn’t paid?” gets text and a request, not a view.
- “Already used” on the sign-in page. The first Allow worked. Close the page and check the AI app before making another code.
- Name it PtEverywhere. The AI app calls the product by the name typed when it was added. Any other name shows up in its replies.
- “CSP off” on a view is ChatGPT’s. In Developer mode ChatGPT marks every view that way while its own “enforce CSP” setting is off. The views load nothing from outside, so they draw the same with it on.
- Read the hour in the read-back. Times are read back on the company’s clock, set on Branding (the demo is New York). Check the hour before the yes.
- A sign-in code is not a product login. With calls on, a person who only ever typed a sign-in code has no token, and every call answers “Sign in to PtEverywhere first”. The two demo people have one from step 1.
- Disconnect signs everyone out of the product. After connecting the demo product again, people sign in again.
- The sandbox starts over every night. At 05:30 UTC. It takes 30 requests a minute per person.
More: the video guides · connecting a sign-in · the embed