DRAY · CASE STUDY
How we test Dray's MCP connector in ChatGPT, Claude and Grok
Claude asked for approval three times before its first reply. ChatGPT asked once, and Grok never asked. We found that on 27 September 2026, testing Dray's MCP server in all three web apps from one Tallylamp browser. A person did the sign-ins and approvals. An agent ran the chats.

Why test in the web apps
Dray, which we also make, gives ChatGPT, Claude and Grok one shared memory, so its MCP server has to work inside each of their web apps. An MCP server can pass its own tests and still behave differently inside a chat app. Each app adds connectors its own way and asks for approval at different moments. The model decides when to call a tool, and each model decides differently. You only see that by using the apps, signed in, as a customer would.
Doing it by hand in three apps is slow. Tallylamp lets the agent and the person share one Chrome. The agent drives it through MCP. The person watches from the dashboard and takes control when a step needs them.
One browser, three signed-in apps
Create one persistent browser
Ours is called dray-ai-pages. Give yours a project and a purpose, so you and the agent come back to the same browser rather than a new one with no logins.
Sign in yourself
Open chatgpt.com, claude.ai and grok.com in three tabs. Take control and sign in to each. You type the passwords and 2FA codes, so they never go into the agent's prompt.
Hand it back
When each app shows its signed-in home page, record the signed-in site so the next run can find it. Then choose Return to agent.
Give the apps a server they can reach
The assistant's own servers make the tool calls to your MCP server, over the public internet. They can't reach a server on localhost. Tallylamp's loopback tunnel doesn't help here either, because it only lets the browser reach a private address.
We put the test server behind a Cloudflare quick tunnel for the day, which gave it a public HTTPS address.
| Part | Where it runs |
|---|---|
| The chat tabs | Chrome on your Tallylamp server, driven by the agent or by you |
| Tool calls to your MCP server | The assistant's servers, over the public internet |
| Sign-in and approval pages | The chat tabs, where you take control to use them |
Add the connector to each app
Each app keeps custom MCP servers in a different place, and the menus move. Take control for this part. Risk checkboxes and consent pages are for a person to read, and the agent can't act in the browser while you hold control.
ChatGPT
1approval prompt
Added as an MCP app, with Developer mode on and a risk checkbox before Connect. It asked for the first tool that writes. Read-only tools ran without asking.
Claude
3approval prompts
Added as a custom connector under Customize. Every tool started at Needs approval, including the read-only one.
Grok
0approval prompts
Added as a custom connector. It never asked.
If you ship a connector, plan for Claude's prompts. Dray's read tool carried the MCP readOnlyHint annotation, and Claude still asked before the first call. After Always allow, it stopped asking.
Let the agent run the chats
Then the agent works through the test plan. It types a prompt in one tab, waits, reads the reply and moves to the next. It uses the same browser tools as on any other page, and you can watch the live view as it goes. Our run had eight scenarios with two or three assistants at a time, and the test server logged 104 tool calls.
| Question | Result |
|---|---|
| Does a turn survive its tab moving away? | Yes, in ChatGPT and Claude. The turn finished on their servers, so the agent could work in another tab. Grok wasn't tested. |
| Will a tool call that waits get cut off? | Dray's link tool can wait for a message. Every model chose a 25-second wait, and none of 36 waits was dropped. Longer waits weren't tested. |
| Does Enter always send? | No. A message starting with / opened Grok's command palette, and Enter did nothing. Claude's slash menu swallowed Enter once in three tries. Clicking the send button worked in both. |
Clean up, keep the browser
When the run ended, we removed the connector from all three accounts, deleted the test keys and shut the tunnel. We kept the browser. Its profile holds all three sign-ins, so the next run starts at the test plan instead of three login pages. A site can still end a session, so have the agent check each app is signed in before it starts.
About Dray
Docs behind this guide
Based on Tallylamp's documentation, Dray's help pages and our own notes from the 27 September 2026 run, which are not published.